VBA实现数字列与字母列的相互转化1,⽅法⼀:
'列数转字母
Function CNtoW(ByVal num As Long) As String
CNtoW = Replace(Cells(1, num).Address(False, False), "1", "")
End Function
'字母转列数
Function CWtoN(ByVal AB As String) As Long
CWtoN = Range("a1:" & AB & "1").Cells.Count
End Function
2,⽅法⼆:
1. Function GetColumn(char)
2. Dim t
3. On Error Resume Next
4. If IsNumeric(char) Then
5. t = Split(Cells(1, char).Address, "$")(1)
6. Else
7. t = Columns(char & ":" & char).Column
8. End If
9. If Err.Number <> 0 Then GetColumn = "超出范围" Else GetColumn = t
10. End Function
3,⽅法三:
不过就功能、⽬的来说,确实意义不⼤。
因为既然⽤到了VBA,就可以后台使⽤多种⽅法处理列数,没必要再写⼀个函数来⽤。
⽐如, cells(n,"AB") 或者 Range("AB" & n) 就可以直接定位到指定列标所在列。
或者⽤ cells(n,28).Address 来获取列标字母。
如同楼上各位的例⼦那样。
⽽如果需要⾃⼰计算把列序号转换为字母标签,则可以⽤下⾯迭代计算:
假设t为列序号,那么:
s = ""
Do
s = Chr((t - 1) Mod 26 + 65) & s '以26除数反複Mod求余得到对应1-26字母 t = Int((t - 1) / 26) '再⽤26除后Int取整进⾏迭代计算
Loop Until t <= 0 '反複算直⾄数t已不能除26求余⽌
+++++++
Function f(t)
Do
f = Chr((t - 1) Mod 26 + 65) & f
t = Int((t - 1) / 26)
Loop Until t = 0
End Function
+++++++
或者写成:
+++++++
execl函数 linuxFunction f(t)
Do
f = Chr((t - 1) Mod 26 + 65) & f
t = (t - 1) \ 26
Loop While t
End Function
+++++++
(本⽂主要内容归纳⾃⽹上⽂章:EXCEL列标数字与字母的转换)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论