zoukankan      html  css  js  c++  java
  • VBA实现数字列与字母列的相互转化

    gold_star

    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
    1. 方法二:
    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列标数字与字母的转换)

  • 相关阅读:
    1、编写一个简单的C++程序
    96. Unique Binary Search Trees
    python 操作redis
    json.loads的一个很有意思的现象
    No changes detected
    leetcode 127 wordladder
    django uwsgi websocket踩坑
    you need to build uWSGI with SSL support to use the websocket handshake api function !!!
    pyinstaller 出现str error
    数据库的读现象
  • 原文地址:https://www.cnblogs.com/grj001/p/12223132.html
Copyright © 2011-2022 走看看