在 Excel 中,获取单元格的当前行号和当前列名的函数是什么?
答案1
您可以使用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()
我不确定是否有更简单的方法,但我知道从单元格A1
到ZZ99
单元格都可以正常工作。然而,这说明了为什么最好避免使用基于字母的列标识符,并坚持使用纯基于数字的公式(例如,使用列号而不是带有 的字母OFFSET
)。
答案2
尝试以下函数:
=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
解释:ADDRESS(row_num, column_num, [abs_num])
. [abs_num] = 4
= 相对地址。这意味着返回值中没有“$”。对于列“AB”,将ADDRESS
返回“AB1”。替代将删除“1”。
答案3
尝试这个
=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")
这将为您提供精确的列标题,没有任何 $ 等。
答案4
为了获取列名,我使用了以下公式。
对于特定单元格:
=SUBSTITUTE(CELL("address",H3),"$" & ROW(H3),"")
对于当前单元格:
=SUBSTITUTE(CELL("address"),"$" & ROW(),"")
尝试一下这个变体。它适用于 3 个字母的列,并且不会在前端留下“$”:
=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")