您可以使用COLUMN函数轻松确定单元格的数字列。您需要做的就是将这样的公式放在单元格中,结果是A = 1,B = 2等的值:

=COLUMN()

如果您想要字母值而不是数字值怎么办?这可以通过几种不同方式中的任何一种来完成。例如,以下公式对于A到Z的前26列非常有效:

=CHAR(COLUMN()+64)

这是有效的,因为字母A到Z使用字符代码65到90。当COLUMN返回A到Z列的值(1到26)时,可以将其添加到64以获取这些列的字母65到90。

||||当然,如果您想知道Z以外的列的字母名称,此解决方案将不起作用。(Excel可以使用IV之前的列。)

此公式适用于单字符和双字符列:

=IF(COLUMN()<27,CHAR(COLUMN()+64),CHAR((COLUMN()/26)+64)& CHAR(MOD(COLUMN(),26)+64))

如您所知,当您为一列输入多个字符时,公式会很快变长。但是,可以使用COLUMN以外的函数来缩短公式。考虑以下公式,该公式主要取决于ADDRESS函数:

=LEFT(ADDRESS(1,COLUMN(),4),(COLUMN()>26)+1)

ADDRESS函数返回特定单元的地址。在这种情况下,它将返回当前列第一行中单元格的地址。因此,如果该公式位于单元格BF27中,则它将返回BF1。

该公式使用LEFT函数返回地址中最左边字符的正确数量,减去该行的数字1。

该公式的更短版本依赖于SUBSTITUTE函数而不是LEFT函数:

=SUBSTITUTE(ADDRESS(ROW(),COLUMN(),4),ROW(),"")

此版本使用ROW函数将地址放在一起,然后从ADDRESS函数的结果中去除ROW值。

当然,如果需要,您也可以使用基于宏的解决方案。 follow宏将与工作表中的任何列一起使用:

Function AlphaCol() As String     Dim J As Integer     Dim K As Integer     Dim iDiv As Integer     Dim sTemp As String

Application.Volatile     J = Selection.Column     iDiv = 26 ^ 2     sTemp = ""

While J > 0         K = Int(J / iDiv)

If K > 0 Then sTemp = sTemp & Chr(K + 64)

J = J - (K * iDiv)

iDiv = iDiv / 26     Wend     AlphaCol = sTemp End Function

宏是用户定义的函数,这意味着您只需将其添加到任何单元格即可在工作表中使用它:

=AlphaCol()

返回一个由列名称组成的文本字符串。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(3254)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本:

链接:/ excelribbon-Alphabetic_Column_Designation [字母列指定]。