如何使用Excel宏从Excel中的列名称获取列号?
我想你想要这个?
列名转列号
Sub Sample()
ColName = "C"
Debug.Print Range(ColName & 1).Column
End Sub
编辑: 同时包括您想要的相反结果
列编号转换为列名称
Sub Sample()
ColNo = 3
Debug.Print Split(Cells(, ColNo).Address, "$")(1)
End Sub
后续
如果我在最上面有一个薪资字段,比如说在单元格C(1,1)中,现在如果我修改文件并将薪资列移到其他地方,比如F(1,1),那么我就必须修改代码,所以我想让代码检查薪资并找到列号,然后根据该列号执行其余操作。
在这种情况下,我建议使用.FIND
。请参考下面的示例
Option Explicit
Sub Sample()
Dim strSearch As String
Dim aCell As Range
strSearch = "Salary"
Set aCell = Sheet1.Rows(1).Find(What:=strSearch, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
MsgBox "Value Found in Cell " & aCell.Address & _
" and the Cell Column Number is " & aCell.Column
End If
End Sub
快照
Excel公式用于从数字返回列字母(来自先前的问题如何将列数(例如127)转换为Excel列(例如AA),由@Ian回答),其中A1保存您的列号:
=substitute(address(1,A1,4),"1","")
请注意,这两种方法都适用于列名中有多少个字母。
希望这能帮助其他人。
Activesheet.Range("TableName[ColumnName]").Copy
。
activesheet.listobjects("TableName[ColumnName]").Copy
Public Function GetIndexForColumn(Column As String) As Long
Dim astrColumn() As String
Dim Result As Long
Dim i As Integer
Dim n As Integer
Column = UCase(Column)
ReDim astrColumn(Len(Column) - 1)
For i = 0 To (Len(Column) - 1)
astrColumn(i) = Mid(Column, (i + 1), 1)
Next
n = 1
For i = UBound(astrColumn) To 0 Step -1
Result = (Result + ((Asc(astrColumn(i)) - 64) * n))
n = (n * 26)
Next
GetIndexForColumn = Result
End Function
基本上,这个函数与任何十六进制转十进制的函数相同,只不过它只接受字母字符(A=1,B=2,...)。 最右边的字符计为1,每个向左的字符计为其右侧字符的26倍(这使得AA=27 [1 + 26],AAA=703 [1 + 26 + 676])。 使用UCase()使该函数不区分大小写。
在即时窗口中编写并运行以下代码
?cells(,"type the column name here").column
?cells(,"BYL").column
将返回2014。该代码不区分大小写,因此您可以编写?cells(,"byl").column
,输出仍将相同。Option Explicit
Sub Sample()
Dim sColumnLetter as String
Dim iColumnNumber as Integer
sColumnLetter = "C"
iColumnNumber = Columns(sColumnLetter).Column
MsgBox "The column number is " & iColumnNumber
End Sub
Sub Sample()
ColName = ActiveCell.Column
MsgBox ColName
End Sub
=COLUMN(INDIRECT("C"&1))
。可能有更简单的方法... - Wooly Jumper