如何在excel中用函数或vba生成a-z的英文字母序列?

我们知道英文字母有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
       

发表评论