Table of contents
在本教程中,我们将了解如何将Excel的列号改为相应的字母字符。
在Excel中建立复杂的公式时,有时你可能需要从一个特定的单元格或从一个给定的数字中获得一个列字母。 这可以通过两种方式来实现:使用内置函数或自定义函数。
如何将列号转换为英文字母(单字母列)?
如果列名由一个字母组成,从A到Z,你可以通过这个简单的公式得到它。
CHAR(64 +) 栏位数 )例如,将数字10转换为一列字母,其公式为:。
=CHAR(64 + 10)
也可以在某个单元格中输入一个数字,并在公式中引用该单元格。
=CHAR(64 + A2)
这个公式如何运作。
CHAR函数根据ASCII集的字符编码返回一个字符。 英文字母大写字母的ASCII值为65(A)到90(Z)。 因此,要得到大写字母A的字符编码,需要在64中加1;要得到大写字母B的字符编码,需要在64中加2,以此类推。
如何将Excel的列号转换为字母(任何列)?
如果你正在寻找一个通用的公式,适用于Excel中的任何列(1个字母、2个字母和3个字母),那么你就需要使用更复杂的语法。
替代(地址(1, 栏位数 , 4), "1", "")在A2的列字母中,该公式采取这种形式。
=substitute(address(1, a2, 4), "1", "" )
这个公式如何运作。
首先,你用感兴趣的列号构建一个单元格地址。 为此,向ADDRESS函数提供以下参数。
- 1个用于 行数_num (行数其实并不重要,所以你可以使用任何行数)。
- A2(包含列号的单元格)为 列_num .
- 4为 abs_num 参数来返回一个相对引用。
有了上述参数,ADDRESS函数返回文本字符串 "A1 "作为结果。
由于我们只需要一个列的字母,我们在SUBSTITUTE函数的帮助下剥离行号,该函数在文本 "A1 "中搜索 "1"(或你在ADDRESS函数中硬编码的任何行号)并将其替换为一个空字符串("")。
使用自定义函数从列号中获取列字母 自定义函数
如果你需要定期将列数字转换为英文字母,那么一个自定义的用户定义函数(UDF)可以大大节省你的时间。
该函数的代码是非常简单明了的。
Public Function ColumnLetter(col_num) ColumnLetter = Split(Cells(1, col_num).Address, "$" ) (1) End Function在这里,我们使用 细胞 属性指的是第1行的一个单元格和指定的列号以及 地址 然后,Split函数使用$符号作为分隔符将返回的字符串分解成单个元素,我们返回元素(1),也就是列字母。
在VBA编辑器中粘贴该代码,你的新的 栏位字母 详细指导请见:如何在Excel中插入VBA代码。
从终端用户的角度来看,该函数的语法是如此简单。
列字母(col_num)在哪里? col_num 是你想转换为字母的列号。
你的真实公式可以如下。
=ColumnLetter(A2)
而且它的返回结果与前面例子中讨论的本地Excel函数完全相同。
如何获得某些单元格的列字母
要识别一个特定单元格的列字母,使用COLUMN函数检索列号,并将该列号提供给ADDRESS函数。 完整的公式将采用这种形式。
替代(地址(1, 列( 细胞_地址 ), 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", "" )
提示:如果你的数据集中的数字与列号不一致,一定要进行必要的修正。 例如,如果我们把第一周的数据放在B列,第二周的数据放在C列,以此类推,那么我们就用H3+1来获得正确的列号。
- 构建一个代表范围参考的字符串
要建立一个字符串形式的范围引用,你要将上述公式返回的列字母与第一行和最后一行的数字连接起来。 在我们的例子中,数据单元格在第3行到第8行,所以我们要使用这个公式。
=SUBSTITUTE(ADDRESS(1, H3, 4), "1", "" ) & "3:" & SUBSTITUTE(ADDRESS(1, H3, 4), "1", "" ) & "8"
鉴于H3含有 "3",而 "3 "被转换为 "C",我们的公式经历了以下转变。
="C"&"3:"&"C"&"8"
并产生字符串C3:C8。
- 做一个动态范围的参考
为了将文本字符串转化为Excel可以理解的有效引用,将上述公式嵌套在INDIRECT函数中,然后将其传递给XLOOKUP的第三个参数。
=XLOOKUP(H2, E3:E8, INDIRECT(H4), "未找到" )
为了摆脱包含返回范围字符串的额外单元格,你可以将SUBSTITUTE ADDRESS公式放在INDIRECT函数本身中。
=XLOOKUP(H2, E3:E8, INDIRECT(SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "3:" & SUBSTITUTE(ADDRESS(1, H3, 4), "1", "" & "8"), "未找到")
通过我们定制的ColumnLetter功能,你可以得到一个更紧凑和优雅的解决方案。
=XLOOKUP(H2, E3:E8, INDIRECT(ColumnLetter(H3) & "3:" & ColumnLetter(H3) & "8"), "未找到")
这就是如何在Excel中从数字中找到一列字母的方法。 感谢你的阅读,期待下周在我们的博客上见到你
供下载的实践工作手册
Excel列号转字母--实例(.xlsm文件)