VBA列数字与字母互换
<内容来至Excelhome>
vba列数字与字母互换:
方案一:速度:快
Function NumToStr(ByVal Num As Long) As String '数字转字母
Dim M As Long
If Num < 1 Then Exit Function
Do
M = Num Mod 26
If M = 0 Then M = 26
NumToStr = Chr(64 + M) & NumToStr
Num = (Num - M) / 26
Loop Until Num <= 0
End Function
Function StrToNum(ByVal Str As String) As Long '字母转数字
Dim s As String, S1 As String
If Str = "" Then Exit Function
Str = UCase(Str)
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For i = 1 To Len(Str)
S1 = Mid(Str, i, 1)
If InStr(s, S1) = 0 Then Crazy_Num = -1: Exit Function
StrToNum = StrToNum + InStr(s, S1) * 26 ^ (Len(Str) - i)
Next
End Function
方案二:迭代 速度:略快
Function colinf(t) '列标签字母⇔列序号数值 相互转换
If t = "" Then colinf = "": Exit Function '如果引用単元格=空白 即返回空白退出
If IsNumeric(t) Then '如果引用単元格=数值(列序号),計算返回列标签大写英文字母
If t < 1 Then colinf = "": Exit Function '如果数是0或負数返回空白退出
Do
colinf = Chr((t - 1) Mod 26 + 65) & colinf '以26除数反複Mod求余得到1-26字母
t = Int((t - 1) / 26) '求余后再用26除后Int取整……
Loop Until t <= 0 '反複迭代计算直至数t已不能除26求余止
Else '如果引用単元格=文本字符,計算返回序号数値
t = UCase(t) '首先文本転換大写字母
For i = 1 To Len(t) '遍各字符
colinf = colinf + (Asc(Mid(t, i, 1)) - 64) * 26 ^ (Len(t) - i) '按26冪乗計算累計数
Next
End If
End Function
方案三:递归 速度:略快
Function getColStr$(n) '列序号数字→列标签字母
Dim s$, t as long
t = n
Do
s = Chr((t - 1) Mod 26 + 65) & s
t = Int((t - 1) / 26)
Loop Until t <= 0
getColStr = s
End Function
方案四:
Function getC_Str(n) '列序号数字→列标签字母
getC_Str = Split(Cells(1, n).Address, "$")(1)
End Function
------------------以下为测试3种方案全码-----------------
Sub test()
dqT = Timer
M = 1000: n = 10000
Dim strTmp
For i = 1 To M
For j = 1 To n
strTmp = getC_Str(n)
Next j
Next i
dqT1 = Timer
For i = 1 To M
For j = 1 To n
strTmp = getColStr(j)
Next j
Next i
dqT2 = Timer
For i = 1 To M
For j = 1 To n
strTmp = NumToStr(n)
Next j
Next i
MsgBox " getC_Str 用时:" & Format(Timer - dqT1, "0.0000") & vbLf & "getColStr 用时:" & Format(dqT2 - dqT1, "0.0000") & vbLf & "NumToStr用时:" & Format(Timer - dqT2, "0.0000")
End Sub
Function getColStr$(n) '列序号数字→列标签字母
Dim s$, t as long
t = n
Do
s = Chr((t - 1) Mod 26 + 65) & s
t = Int((t - 1) / 26)
Loop Until t <= 0
getColStr = s
End Function
Function NumToStr(ByVal Num As Long) As String '数字转字母
Dim M As Long
If Num < 1 Then Exit Function
Do
M = Num Mod 26
If M = 0 Then M = 26
NumToStr = Chr(64 + M) & NumToStr
Num = (Num - M) / 26
Loop Until Num <= 0
End Function
Function getC_Str(n) '列序号数字→列标签字母
getC_Str = Split(Cells(1, n).Address, "$")(1)
End Function
VBA列数字与字母互换相关推荐
- php数字和字母互换,PHP实现十进制数字与二十六进制字母串相互转换操作示例
本文实例讲述了PHP实现十进制数字与二十六进制字母串相互转换操作.分享给大家供大家参考,具体如下: /** * 将十进制数字转换为二十六进制字母串 */ function num2alpha($int ...
- python报表自动化系列 - 译码:将纯数字译码为Excel列坐标的字母索引表示形式
python译码器 将纯数字译码为Excel列坐标的字母索引表示形式(特殊的二十六进制) 李俊才 邮箱:291148484@163.com [内容概述] 译码在一定程度上相当于查字典.对于简单的编码, ...
- matlab显示英文字母,#EXCEL函数判断是数字还是字母#excel表格列显示字母
EXCEL如何筛选出包含字母的值? 可以用ISNUMBER后进行筛选. 1.以Excel2010版本为例,如下图,该列既有纯数字的值,又有包含字母的值,选出包含字母的值: 2.首先在B2单元格输入公式 ...
- Java poi Excel xls列号数字转字母
最近遇到导出的xls中 列是动态生成的,且单元格中需要用到公式,而xls公式不是用数字列号而是用列字母来表示的,这时需要把数字的列号转成该列对应的字母.因为是按月导出 一个月最多31天,所以刚开始采用 ...
- VBA 列号转换成列英文字母
Replace(Cells(1, 1).address(False, False), "1", "") Step1. 获取Cell所在的列(英文字母)和行 Ce ...
- vue中有汉字和数字。怎么截取汉字保留数字_Excel提取中文,数字和字母,一分钟搞定!...
大家在处理Excel文档,经常会遇到一些将数字,字母,汉字混合在一起的数据,看着就头疼.而往往领导又希望我们将这些数据拆分开,一边咒骂那个录数据的人,一边又在苦恼该怎么办. 今天教大家一分钟搞定这种情 ...
- Python,OpenCV使用KNN来构建手写数字及字母识别OCR
Python,OpenCV使用KNN来构建手写数字及字母识别OCR 1. 原理 1.1 手写数字识别 1.2 字母识别 2. 源码 2.1 手写数字OCR 2.2 字母OCR 参考 这篇博客将介绍如何 ...
- android 自定义键盘_Android自定义输入车牌号键盘、车牌简称,数字 ,字母键盘...
本文来自阿钟的投稿,全文阅读大约十分钟 为了便于用户快捷的输入车牌号码便需要自定义个车牌键盘,而不是使用系统的键盘输入,上效果图: 横屏效果 图片 竖屏效果 图片 一.首先我们要来分析一下需要做哪些东 ...
- C#数字转字母,ASCII码转换
字母转换成数字 byte[] array = new byte[1]; //定义一组数组array array = System.Text.Encoding.ASCII.GetBytes(string ...
最新文章
- Navicat 12连接MySQL8服务器
- R可视化散点图并绘制回归曲线
- 新手看看如何发布一个网站
- 【计算机基础】 Virtual memory 虚拟内存
- Win10+Torch1.9+CUDA11.1成功配置YOLOX预测环境
- SQLite的基本用法
- git tig使用技巧_如何使用Tig浏览Git日志
- python多线程下载多个文件_python多线程下载文件 练习1
- 生成函数学习笔记心得
- 学计算机干眼,长时间看电脑致视力模糊?4个动作解决干眼症
- 文本数据挖掘(Text Mining)
- Uni-app 小程序 App 的广告变现之路:激励视频广告
- 大白菜U盘启动制作 1.2 官方下载
- Echarts南丁格尔图.
- ubuntu12.04 rythonbox不支持mms电台
- Dom——隔行变色、分时显示问候语
- 学计算机颈椎,电脑对我们的颈椎有多大危害?
- OpenCV Tutorial: 縮寫(uchar、ushort、Vec)
- 香港主机需要考虑的几个因素
- 【Prometheus】Metric类型的理解及运用
热门文章
- 面试题总结之windows/linux内存管理
- 最好用的lua编辑器--------emmylua使用汇总
- grub命令 u盘安装linux,Linux实现U盘启动(1.GRUB安装U盘)
- 居家办公是什么?有哪些优缺点?
- mongodb java 查询 日期_Java中的日期MongoDB查询
- 广东发放全国首笔无抵押区块链贷款 | 产业区块链周报
- Android 跳转设置电池不优化
- 相机标定教程(使用Matlab工具箱)
- 关于SQL的交集查询问题
- 计算机中mu的作用是什么,计算机上MM-MUGT等分别代表意思.doc