Jad*_*ias 34 microsoft-excel-2007 worksheet-function microsoft-excel
Excel中获取单元格的当前行号和当前列名的函数是什么?
小智 43
尝试以下功能:
=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
Run Code Online (Sandbox Code Playgroud)
解释:ADDRESS(row_num, column_num, [abs_num])
。[abs_num] = 4
= 相对地址。这意味着返回值中没有“$”。对于列“AB”,ADDRESS
将返回“AB1”。替代品删除“1”。
Bre*_*ugh 33
您可以使用ROW
和COLUMN
函数来执行此操作。如果省略这些公式的参数,则使用当前单元格。这些可以直接使用与所述OFFSET
功能,或者任何其他函数,其中可以同时指定行和列作为数值。
例如,如果=ROW()
在单元格 D8 中输入,则返回值是 8。如果=COLUMN()
在同一单元格中输入,则返回值是 4。
如果你想要列字母,你可以使用该CHAR
功能。我不建议使用字母来表示列,因为在传入双字母列名时事情会变得棘手(无论如何,只使用数字更合乎逻辑)。
无论如何,如果您仍然想要获取列字母,您可以简单地将 64 添加到列号(64 是少一个字符A
),因此在前面的示例中,如果您将单元格的值设置为=CHAR(COLUMN()+64)
,则返回的值将是D
. 如果您希望单元格的值是单元格位置本身,则完整的公式将为=CHAR(COLUMN()+64) & ROW()
.
仅供参考,我从 ASCII 表中得到了 64。您也可以使用该CODE
公式,因此使用该公式的更新公式将为=CHAR(COLUMN() + CODE("A") - 1)
. 您必须减去 1,因为 的最小值COLUMN
始终为 1,然后整个公式的最小返回值将是B
。
但是,这不适用于两个字母的列。在这种情况下,您需要以下公式来正确解析两个字母的列:
=IF(COLUMN()>26,IF(RIGHT(CHAR(IF(MOD(COLUMN()-1,26)=0,1,MOD(COLUMN()-1,26))+64),1)="Y",CHAR(INT((COLUMN()-1)/26)+64) & "Z",CHAR(INT((COLUMN()-1)/26)+64) & CHAR(IF(MOD(COLUMN(),26)=0,1,MOD(COLUMN(),26))+64)),CHAR(COLUMN()+64))&ROW()
Run Code Online (Sandbox Code Playgroud)
我不确定是否有更简单的方法来做到这一点,但我知道从单元格A1
到ZZ99
没有问题。然而,这说明了为什么最好避免使用基于字母的列标识符,并坚持使用纯基于数字的公式(例如,使用列号而不是带有 的字母OFFSET
)。
小智 5
尝试这个
=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")
Run Code Online (Sandbox Code Playgroud)
这为您提供了确切的列标题,没有任何 $ 等。
归档时间: |
|
查看次数: |
323361 次 |
最近记录: |