在本教程中,我们将了解如何将Excel列的数字改为相应的字母。
在Excel中建立复杂的公式时,有时你可能需要从一个特定的单元格或从一个给定的数字中获得一个列字母。这可以通过两种方式实现:使用内置函数或自定义函数。
如何将列号转换为字母(单字母列)?
如果列名由单个字母组成,从A到Z,你可以通过这个简单的公式得到它。
CHAR(64 +) 栏目编号)
例如,将数字10转换为一列字母,其公式为:。
=CHAR(64 + 10)
也可以在某个单元格中输入一个数字,并在公式中引用该单元格。
=CHAR(64 + A2)
这个公式是如何工作的。
CHAR函数返回一个字符,该字符是基于在 ASCII 集。英文字母大写字母的ASCII值为65(A)至90(Z)。因此,要得到大写字母A的字符编码,你要把1加到64;要得到大写字母B的字符编码,你要把2加到64,以此类推。
如何将Excel的列号转换为字母(任何列)?
如果你正在寻找一个通用的公式,适用于Excel中的任何列(1个字母、2个字母和3个字母),那么你需要使用更复杂的语法。
代替(地址(1, 栏目号, 4), “1”, “”)
在A2的列字母中,公式采取这种形式。
=SUBSTITUTE(ADDRESS(1, A2, 4), "1", "")
这个公式是如何工作的。
首先,你用感兴趣的列号构建一个单元格地址。为此,提供以下参数给 ADDRESS 功能。
- 1为 行数 (行号其实并不重要,所以你可以使用任何行号)。
- A2(包含列号的单元格)为 column_num.
- 4为 abs_num 参数,以返回一个相对引用。
有了上述参数,ADDRESS函数返回文本字符串 “A1 “作为结果。
由于我们只需要一个列的字母,我们借助于 替换 函数,它在文本 “A1 “中搜索 “1”(或你在ADDRESS函数中硬编码的任何行号),并将其替换为空字符串(””)。
自定义函数,将列号改为字母
如果你需要定期将列号转换成字母,那么一个自定义的用户定义函数(UDF)可以极大地节省你的时间。
该函数的代码相当简单明了。
Public Function ColumnLetter(col_num) ColumnLetter = Split(Cells(1, col_num).Address, "$")(1) End Function
在这里,我们使用 细胞 属性指的是第1行的一个单元格和指定的列号以及 地址 属性来返回一个包含对该单元格绝对引用的字符串(如$A$1)。然后,Split函数使用$符号作为分隔符将返回的字符串分解成单个元素,我们返回元素(1),也就是列字母。
将代码粘贴在VBA编辑器中,你的新的 栏位字母 函数已经可以使用了。详细指导请见。 如何在Excel中插入VBA代码.
从终端用户的角度来看,该函数的语法是这样的简单。
ColumnLetter(col_num)
其中 col_num 是你想转换为字母的列号。
你的真实公式可以如下。
=ColumnLetter(A2)
而且它将返回与前面例子中讨论的本地Excel函数完全相同的结果。
如何获得某些单元格的列字母
要确定特定单元格的列字母,使用COLUMN函数检索列号,并将该列号提供给ADDRESS函数。完整的公式将是这样的。
代替(address(1, column(细胞_地址), 4), “1”, “”)
作为一个例子,让我们找到C5单元格的列字母。
=SUBSTITUTE(ADDRESS(1, COLUMN(C5), 4), "1", "")
很明显,结果是 “C” 🙂
如何获得当前单元格的列字母
要算出当前单元格的字母,公式与上例中的几乎一样。唯一不同的是,COLUMN()函数是用一个空参数来指代公式所在的单元格。
=SUBSTITUTE(ADDRESS(1, COLUMN(), 4), "1", "")
如何从列号创建动态范围参考
希望前面的例子能给你一些新的思考课题,但你可能想知道实际应用。
在这个例子中,我们将向你展示如何使用 “列号转字母 “公式来解决现实生活中的任务。特别是,我们将创建一个动态 XLOOKUP 公式,将从一个特定的列中根据其数字提取数值。
从下面的示例表中,假设你希望得到一个特定项目(H2)和一周(H3)的利润数字。
为了完成任务,你需要向XLOOKUP提供返回值的范围。由于我们只有周数,它与列号相对应,我们将首先把这个数字转换为列号,然后构建范围参考。
为了方便起见,让我们把整个过程分解成3个简单的步骤。
- 将一列数字转换为字母 有了H3中的列号,使用已经熟悉的公式将其变为一个字母字符。
=SUBSTITUTE(ADDRESS(1, H3, 4), "1", "")
提示。 如果你的数据集中的数字与列号不一致,一定要进行必要的修正。例如,如果我们把第1周的数据放在B列,第2周的数据放在C列,以此类推,那么我们就用H3+1来得到正确的列号。
- 构建一个代表范围参考的字符串 要以字符串的形式构建一个范围引用,你需要 串联 将上述公式返回的列字母与第一行和最后一行的数字相连接。在我们的案例中,数据单元格在第3行到第8行,所以我们使用这个公式。
=SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "3:" & SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "8"
鉴于H3包含 “3”,并被转换为 “C”,我们的公式进行了如下转换。
="C"&"3:"&"C"&"8"
并产生字符串C3:C8。
- 做一个动态范围参考 为了将文本字符串转化为Excel可以理解的有效引用,将上述公式嵌套在 指数 函数,然后将其传递给3rd XLOOKUP的参数。
=XLOOKUP(H2, E3:E8, INDIRECT(H4), "Not found")
为了摆脱包含返回范围字符串的额外单元格,你可以将SUBSTITUTE ADDRESS公式放在INDIRECT函数本身中。
=XLOOKUP(H2, E3:E8, INDIRECT(SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "3:" & SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "8"), "Not found")
用我们自定义的 栏位字母函数,你可以得到一个更紧凑和优雅的解决方案。
=XLOOKUP(H2, E3:E8, INDIRECT(ColumnLetter(H3) & "3:" & ColumnLetter(H3) & "8"), "Not found")
这就是如何在Excel中从一个数字中找到一列字母。感谢你的阅读,期待下周在我们的博客上见到你!
练习册下载
Excel列号转字母–实例 (.xlsm文件)