使⽤VBA对Excel中列名称与列号之间进⾏转换
这⾥的列名称指的是A、B、C等样式的列,列号指列的编号,如1、2、3等等。
转换之后,A列对应的列号为1,反之,列号为1的列转换之后为A。函数如下:
1、通过列名称转换成对应的列号。
Function GetColumnNum(ByVal ColumnName As String) As Integer
Dim Result As Integer, First As Integer, Last As Integer    Result = 1
If Trim(ColumnName) <> "" Then
If Len(ColumnName) = 1 Then
Result = Asc(UCase(ColumnName)) - 64
ElseIf Len(ColumnName) = 2 Then
If UCase(ColumnName) > "IV" Then ColumnName = "IV"
First = Asc(UCase(Left(ColumnName, 1))) - 64
Last = Asc(UCase(Right(ColumnName, 1))) - 64
Result = First * 26 + Last
End If
End If
GetColumnNum = Result End Function
测试:
Sub TestGetColumnNum()
Dim ColumnNum As Integer
ColumnNum = GetColumnNum("AA")
MsgBox ColumnNum, vbInformation, "测试"
End Sub
2、通过列号转换成对应的列名称。
Function GetColumnName(ByVal ColumnNum As Integer) As String
Dim First As Integer, Last As Integer
Dim Result As String
If ColumnNum > 256 Then ColumnNum = 256
First = Int(ColumnNum / 27)
Last = ColumnNum - (First * 26)
If First > 0 Then
Result = Chr(First + 64)
End If    If Last > 0 Then
Result = Result & Chr(Last + 64)
End If
GetColumnName = Result
End Function
测试:
Sub TestGetColumnName()
Dim ColumnName As String
ColumnName = GetColumnName(27)
MsgBox ColumnName, vbInformation, "测试"
End Sub
3、说明
在以上两个函数中,如果输⼊的参数⼤于Excel的最⼤列号"IV"(256),则返回的值为最⼤的列数。
或有:getcolname=iif(intcol\26,chr(64 + intcol\26), " ")& chr(64+intcol mod 26)即可实现
其中:iif(intcol\26,chr(64 + intcol\26), " ")返回列号的第⼀位如AB列的第⼀位为A, chr(64+intcol mod 26)返回列号的低位,如如AB列的低位为B;
解释:如果intcol=2,则intcol\26为假,函数iif返回“空格”,⽽chr(65+1mod 26)=65,65为A,所
以1对应的列号为b,此种算法有错误。
如果intcol>26则intcol\26为真,函数iif返回
除法(/)、整数除法(\)、求模运算(Mod)
IIF 函数
根据表达式的值,来返回两部分中的其中⼀个。
IIF(expr, truepart, falsepart)
IIF 函数的语法含有下⾯这些命名参数:
expr        必要参数。⽤来判断真伪的表达式。
truepart        必要参数。如果 expr 为 True,则返回这部分的值或表达式。falsepart        必要参数。如果 expr 为 False,则返回这部分的值或表达式。
代码字符代码字符代码字符代码字符
032[空格]64@96`
133!65A97a
234"66B98b
335#67C99c
436$68D100d
537%69E101e
638&70F102f
739'71G103g
8**40(72H104h
9**41)73I105i
10**42*74J106j
1143+75K107k
1244,76L108l
13**45-77M109m
1446.78N110n
15?47/79O111o
16?48080P112p
17?49181Q113q
18?50282R114r
1951383S115s
2052484T116t
2153585U117u
22?54686V118v
23?55787W119w
24?56888X120x
25?57989Y121y
26?58:90Z122z
2759;91[123{
28?60<92\124|
column函数的使用29?61=93]125}
30-62>94^126~
3163?95_127?
下表列出了字符集中的 128 - 255。
代码字符代码字符代码字符代
字符
128€160[空格]192à224à
129?161?193á225á
130?162¢194?226a
131?163£195?227?
132?164¤196?228?
133…165¥197?229?
134?166|198?230?
135?167§199?231?
136?168¨200è231?
137‰169?201é232è138?170a202ê233é139?171?203?234ê140?172?204ì235? 141?173-205í236ì142?174?206?237í143?175¯207?238? 144?176°208D239? 145‘177±209?240e 146’1782210ò241? 147“1793211ó242ò148”180′212?243ó149?181µ213?244? 150–182?214?245? 151—183·215×246? 152?184?216?247÷153?1851217ù248? 154?186o218ú249ù155?187?219?250ú156?188?220ü251? 157?189?221Y252ü158?190?222T253y 159?191?223?254t

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。