VBA实现数字列与字母列的相互转化
gold_star
- 方法一:
'列数转字母
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
- 方法二:
Function GetColumn(char)
Dim t
On Error Resume Next
If IsNumeric(char) Then
t = Split(Cells(1, char).Address, "$")(1)
Else
t = Columns(char & ":" & char).Column
End If
If Err.Number <> 0 Then GetColumn = "超出范围" Else GetColumn = t
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
+++++++
或者写成:
+++++++
Function f(t)
Do
f = Chr((t - 1) Mod 26 + 65) & f
t = (t - 1) \ 26
Loop While t
End Function
+++++++
(本文主要内容归纳自网上文章:EXCEL列标数字与字母的转换)
相关文章
- Java实现 LeetCode 738 单调递增的数字(暴力)
- Java实现 LeetCode 554 砖墙(缝隙可以放在数组?)
- Java实现 LeetCode 405 数字转换为十六进制数
- java实现 洛谷 P1427 小鱼的数字游戏
- java实现 洛谷 P1427 小鱼的数字游戏
- java实现杨辉三角系数
- java实现串中找数字
- java实现第四届蓝桥杯金蝉素数
- Java实现第九届蓝桥杯第几个幸运数字
- Java实现 蓝桥杯 历届真题 数字拆分
- Java实现 蓝桥杯VIP 算法提高 递归倒置字符数组
- Java实现 蓝桥杯 基础练习 特殊的数字
- Java实现 蓝桥杯 基础练习 特殊的数字
- Atitit. 脚本语言的断点单步调试的设计与实现 attialx 总结 php 参照java
- 【WebService笔记02】使用CXF框架实现WebService接口的发布和调用
- Python编程语言学习:仅需一行代码将字符串化的数字数组、int数组、float数组实现之间互换(将一个字符串数组转换成整型数组)
- 【华为机试真题 Python实现】转骰子【2022 Q1 Q2 |200分】
- 【数字信号处理】卷积编程实现 ( 卷积计算原理 | 卷积公式计算 | 使用 matlab 计算卷积 | 使用 C 语言实现卷积计算 )
- 使用Java高速实现进度条
- 在OpenCV里实现二维离散卷积1
- FPGA-基于UART的QVGA显示(二)(实现PC端发送字母数字汉字的分别显示通过按键可以删除字符)
- 11. 使用 HTTP PUT, PATCH 以及 MERGE 请求消费 SAP ABAP OData 服务修改操作的实现及其区别