【问题标题】:How can i get the Column letters of a cell (need to make it work past the Z column such as AA,AB) [duplicate]我怎样才能得到一个单元格的列字母(需要让它超过Z列,如AA,AB)[重复]
【发布时间】:2012-11-27 02:50:31
【问题描述】:

可能重复:
VBA function to convert column number to letter?

我想让列字母超过 Z 列, 在 Z 列之前有很多技术可以获取它,但在 Z 之后,似乎没有任何效果 有办法吗?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    另一种方法:

    Public Function ColumnLettersFromRange(rInput As Range) As String
    
        ColumnLettersFromRange = Split(rInput.Address, "$")(1)
    
    End Function
    

    【讨论】:

      【解决方案2】:

      这应该可以完成工作:

      函数 ColumnName(rng As Range) 作为字符串 暗淡为字符串 s = rng.地址(假,假) ColumnName = Left(s, Len(s) - Len(Format(rng.Row, "0"))) 结束功能

      【讨论】:

        【解决方案3】:

        使用工作表函数来计算列字母并不是一个好的计划。使用 Peter Albert 的 VBA 方法是一种更好的方法!

        我尝试使用工作表函数制作一个,只是为了好玩:/

        A-ZZ

        =IF(A1<27,CHAR(64+A1),IF(A1<703,CHAR(64+INT(A1/26))&CHAR(A1-INT(A1/26)+64),"TOO BIG!"))
        

        A-XFD(不起作用)

        =IF(A1<27,CHAR(64+A1),IF(A1<703,CHAR(64+INT(A1/26))&CHAR(A1-(INT(A1/26)*26)+64),CHAR(64+INT(A1/676))&CHAR(64+(INT(A1-(INT(A1/676)*676))/26))&CHAR(64+INT(A1-((INT(A1-(INT(A1/676)*676))/26)*26)))))
        

        最后一个在尝试计算地址中的第三个字符时失败了,我只是懒得用它,因为它不是一个好计划!

        【讨论】:

        • 这就是我最终得到的公式(直到 XFD 有效):=IF(QUOTIENT(COLUMN(A1),26^2),CHAR(64+QUOTIENT(COLUMN(A1),26^2)),"")&amp; IF(QUOTIENT(COLUMN(A1),26^1),CHAR(64+QUOTIENT(COLUMN(A1)-QUOTIENT(COLUMN(A1),26^2)*26^2,26^1)),"")&amp; CHAR(64+MOD(COLUMN(A1),26))
        • 试试=SUBSTITUTE(ADDRESS(1,A1,4),1,"")
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        • 1970-01-01
        • 2013-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-28
        相关资源
        最近更新 更多