<内容来至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列数字与字母互换相关推荐

  1. php数字和字母互换,PHP实现十进制数字与二十六进制字母串相互转换操作示例

    本文实例讲述了PHP实现十进制数字与二十六进制字母串相互转换操作.分享给大家供大家参考,具体如下: /** * 将十进制数字转换为二十六进制字母串 */ function num2alpha($int ...

  2. python报表自动化系列 - 译码:将纯数字译码为Excel列坐标的字母索引表示形式

    python译码器 将纯数字译码为Excel列坐标的字母索引表示形式(特殊的二十六进制) 李俊才 邮箱:291148484@163.com [内容概述] 译码在一定程度上相当于查字典.对于简单的编码, ...

  3. matlab显示英文字母,#EXCEL函数判断是数字还是字母#excel表格列显示字母

    EXCEL如何筛选出包含字母的值? 可以用ISNUMBER后进行筛选. 1.以Excel2010版本为例,如下图,该列既有纯数字的值,又有包含字母的值,选出包含字母的值: 2.首先在B2单元格输入公式 ...

  4. Java poi Excel xls列号数字转字母

    最近遇到导出的xls中 列是动态生成的,且单元格中需要用到公式,而xls公式不是用数字列号而是用列字母来表示的,这时需要把数字的列号转成该列对应的字母.因为是按月导出 一个月最多31天,所以刚开始采用 ...

  5. VBA 列号转换成列英文字母

    Replace(Cells(1, 1).address(False, False), "1", "") Step1. 获取Cell所在的列(英文字母)和行 Ce ...

  6. vue中有汉字和数字。怎么截取汉字保留数字_Excel提取中文,数字和字母,一分钟搞定!...

    大家在处理Excel文档,经常会遇到一些将数字,字母,汉字混合在一起的数据,看着就头疼.而往往领导又希望我们将这些数据拆分开,一边咒骂那个录数据的人,一边又在苦恼该怎么办. 今天教大家一分钟搞定这种情 ...

  7. Python,OpenCV使用KNN来构建手写数字及字母识别OCR

    Python,OpenCV使用KNN来构建手写数字及字母识别OCR 1. 原理 1.1 手写数字识别 1.2 字母识别 2. 源码 2.1 手写数字OCR 2.2 字母OCR 参考 这篇博客将介绍如何 ...

  8. android 自定义键盘_Android自定义输入车牌号键盘、车牌简称,数字 ,字母键盘...

    本文来自阿钟的投稿,全文阅读大约十分钟 为了便于用户快捷的输入车牌号码便需要自定义个车牌键盘,而不是使用系统的键盘输入,上效果图: 横屏效果 图片 竖屏效果 图片 一.首先我们要来分析一下需要做哪些东 ...

  9. C#数字转字母,ASCII码转换

    字母转换成数字 byte[] array = new byte[1]; //定义一组数组array array = System.Text.Encoding.ASCII.GetBytes(string ...

最新文章

  1. Navicat 12连接MySQL8服务器
  2. R可视化散点图并绘制回归曲线
  3. 新手看看如何发布一个网站
  4. 【计算机基础】 Virtual memory 虚拟内存
  5. Win10+Torch1.9+CUDA11.1成功配置YOLOX预测环境
  6. SQLite的基本用法
  7. git tig使用技巧_如何使用Tig浏览Git日志
  8. python多线程下载多个文件_python多线程下载文件 练习1
  9. 生成函数学习笔记心得
  10. 学计算机干眼,长时间看电脑致视力模糊?4个动作解决干眼症
  11. 文本数据挖掘(Text Mining)
  12. Uni-app 小程序 App 的广告变现之路:激励视频广告
  13. 大白菜U盘启动制作 1.2 官方下载
  14. Echarts南丁格尔图.
  15. ubuntu12.04 rythonbox不支持mms电台
  16. Dom——隔行变色、分时显示问候语
  17. 学计算机颈椎,电脑对我们的颈椎有多大危害?
  18. OpenCV Tutorial: 縮寫(uchar、ushort、Vec)
  19. 香港主机需要考虑的几个因素
  20. 【Prometheus】Metric类型的理解及运用

热门文章

  1. 面试题总结之windows/linux内存管理
  2. 最好用的lua编辑器--------emmylua使用汇总
  3. grub命令 u盘安装linux,Linux实现U盘启动(1.GRUB安装U盘)
  4. 居家办公是什么?有哪些优缺点?
  5. mongodb java 查询 日期_Java中的日期MongoDB查询
  6. 广东发放全国首笔无抵押区块链贷款 | 产业区块链周报
  7. Android 跳转设置电池不优化
  8. 相机标定教程(使用Matlab工具箱)
  9. 关于SQL的交集查询问题
  10. 计算机中mu的作用是什么,计算机上MM-MUGT等分别代表意思.doc