在Google下面的代码中找到了可以将数字转换为列字母的代码,但是从列字母到数字怎么样,任何人都可以帮助重写函数?感谢
Sub colLtr()
Dim mycolumn
mycolumn = 1000
Mcl = Left(Cells(1, mycolumn).Address(1, 0), InStr(1, Cells(1, mycolumn).Address(1, 0), "$") - 1)
MsgBox Mcl
End Sub
答案 0 :(得分:6)
您可以按照这样的字母引用列:
Columns("A")
所以要获取列号,只需修改上面的代码:
Columns("A").Column
上面一行返回一个整数(在这种情况下为1)。
因此,如果您使用变量mycolumn
来存储和引用列号,则可以这样设置值:
mycolumn = Sheets("Sheet1").Columns("A").Column
然后你可以用这种方式引用你的变量:
Sheets("Sheet1").Columns(mycolumn)
或引用单元格(A1
):
Sheets("Sheet1").Cells(1,mycolumn)
或引用您可以使用的一系列单元格(A1:A10
):
Sheets("Sheet1").Range(Cells(1,mycolumn),Cells(10,mycolumn))
答案 1 :(得分:0)
要查看字母指定列的数字等效值:
Sub dural()
ltrs = "ABC"
MsgBox Cells(1, ltrs).Column
End Sub
答案 2 :(得分:0)
给出的答案可能很简单,但在很大程度上次优,因为它需要获取Range并查询属性。最佳解决方案如下:
Function getColIndex(sColRef As String) As Long
Dim sum As Long, iRefLen As Long
sum = 0: iRefLen = Len(sColRef)
For i = iRefLen To 1 Step -1
sum = sum + Base26(Mid(sColRef, i)) * 26 ^ (iRefLen - i)
Next
getColIndex = sum
End Function
Private Function Base26(sLetter As String) As Long
Base25 = Asc(UCase(sLetter)) - 64
End Function
一些例子:
getColIndex("A") '-->1
getColIndex("Z") '-->26
getColIndex("AA") '-->27
getColIndex("AZ") '-->52
getColIndex("AAA") '-->703