如何获取 Excel 中的当前列名?

如何获取 Excel 中的当前列名?

在 Excel 中,获取单元格的当前行号和当前列名的函数是什么?

答案1

您可以使用ROWCOLUMN函数来执行此操作。如果省略这些公式的参数,则使用当前单元格。这些可以直接与功能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()

我不确定是否有更简单的方法,但我知道从单元格A1ZZ99单元格都可以正常工作。然而,这说明了为什么最好避免使用基于字母的列标识符,并坚持使用纯基于数字的公式(例如,使用列号而不是带有 的字母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),"")

相关内容