我们知道英文字母有a-z 26个。
今天本文将介绍如何用excel函数或vba生成各种英文字母序列,如下图所示:
一、在excel中用函数公式生成a-z的英文字母序列
如果要在excel单元格中生成a-z 的英文字母序列,可以使用excel函数CHAR。
在A1单元格中输入公式
Visual Basic
=CHAR(97)
1
=CHAR(97)
可以得到字母a。
在A2单元格中输入公式
Visual Basic
=CHAR(98)
1
=CHAR(98)
可以得到字母b。
依次类推,只要顺序增加Char函数的数字参数,即可获得a-z的26个英文字母序列。
为此可以在A1单元格中输入公式
Visual Basic
=CHAR(96+ROW())
1
=CHAR(96+ROW())
然后拖动填充柄即可获得26个英文字母a-z。
这里为什么是数字97获得字母a呢?
这是根据字符编码,数字97对应的字符按照字符编码规则对应的是小写的字母a。
同样的,按照字符编码规则,还可以找到大写的字母A对应的数字是65,因此在A1单元格中输入以下公式
Visual Basic
=CHAR(64+ROW())
1
=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自定义函数:
Visual Basic
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FunctionGetA2XFD()
DimoWKAsWorksheet
SetoWK=Excel.ActiveSheet
Dimarr()
Fori=1To16384
WithoWK
'获取单元格的地址
sAdd=.Cells(1,i).Address(True,False)
ReDimPreservearr(i-1)
'获取A-XFD的英文字母序列
arr(i-1)=Split(sAdd,"$")(0)
EndWith
Nexti
GetA2XFD=arr
SetoWK=Nothing
EndFunction