我们知道英文字母有a-z 26个。
今天本文将介绍如何用excel函数或vba生成各种英文字母序列,如下图所示:
一、在excel中用函数公式生成a-z的英文字母序列
如果要在excel单元格中生成a-z 的英文字母序列,可以使用excel函数CHAR。
在A1单元格中输入公式
=CHAR(97)
可以得到字母a。
在A2单元格中输入公式
=CHAR(98)
可以得到字母b。
依次类推,只要顺序增加Char函数的数字参数,即可获得a-z的26个英文字母序列。
为此可以在A1单元格中输入公式
=CHAR(96+ROW())
然后拖动填充柄即可获得26个英文字母a-z。
这里为什么是数字97获得字母a呢?
这是根据字符编码,数字97对应的字符按照字符编码规则对应的是小写的字母a。
同样的,按照字符编码规则,还可以找到大写的字母A对应的数字是65,因此在A1单元格中输入以下公式
=CHAR(64+ROW())
然后拖动填充柄即可获得26个大写的英文字母A-Z。
二、在excel中用vba生成a-z的英文字母序列。
以上介绍的是在excel中用函数生成的英文字母序列,在vba中也同样内置了类似的函数Chr。
比如要得到小写字母a,可以使用vba函数chr(97)返回。
要得到大写字母A,可以使用vba函数chr(65)返回。
三、用vba生成A-XFD的字母序列。
上述介绍的excel函数和vba方法都只能生成a-z的26个英文字母序列。
如果要生成更多的英文字母序列,比如A-XFD的英文字母序列,可以借组EXCEL的列标来实现。
从excel 2007版本开始,excel的列宽拓展到了16384列,相应的字母序列也从A-Z拓展到了A-XFD。
为了获得字母序列A-XFD,可以使用如下的vba自定义函数:
Function GetA2XFD() Dim oWK As Worksheet Set oWK = Excel.ActiveSheet Dim arr() For i = 1 To 16384 With oWK '获取单元格的地址 sAdd = .Cells(1, i).Address(True, False) ReDim Preserve arr(i - 1) '获取A-XFD的英文字母序列 arr(i - 1) = Split(sAdd, "$")(0) End With Next i GetA2XFD = arr Set oWK = Nothing End Function
发表评论