列名中的Excel列号

如何使用Excelmacros从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列号,然后根据该列号执行其余的操作。

在这种情况下,我会build议使用.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 

快照

在这里输入图像说明

当你在寻找一个VBA解决scheme的时候,这是我在谷歌search公式解决scheme时的首要结果,所以我会把这个添加到像我这样来到这里的任何人:

Excel公式从列字母 (上面的@A。Klomp的注释)返回数字 ,其中单元格A1包含您的列字母:

=柱(间接(A1& “1”))

由于间接函数是不稳定的,每当任何单元格发生更改时都会重新计算,所以如果有很多这样的函数可能会减慢工作簿的速度。 考虑另一个解决scheme,比如'code'函数,它给出了一个ASCII字符的数字,从65开始,注意要做到这一点,你需要检查列名中有多less个数字,根据“A”,“BB”或“CCC”更改结果。

Excel公式从一个数字返回列字母 (从上一个问题) 如何将列号(例如127)转换为Excel列(例如AA) ,由@Ian回答),其中A1保存您的列号:

=代用品(地址(1,α-1,4), “1”, “”)

请注意,无论列名中有多less个字母,这两种方法都可以工作。

希望这可以帮助别人。

你可以跳过这一切,只是把你的数据放在一个表中。 然后参考表格和标题,它将是完全dynamic的。 我知道这是从3年前,但有人可能仍然觉得这有用。

示例代码:

 Activesheet.Range("TableName[ColumnName]").Copy 

你也可以使用:

 activesheet.listobjects("TableName[ColumnName]").Copy 

你甚至可以在工作表公式中使用这个参考系统。 它非常有活力。

希望这可以帮助!

在我看来,最简单的获取列号的方法是:
Sub Sample() ColName = ActiveCell.Column MsgBox ColName End Sub

在即时窗口中编写并运行以下代码

 ?cells(,"type the column name here").column 

例如?cells(,"BYL").column将返回2014.代码是不区分大小写的,因此您可以编写?cells(,"byl").column并且输出仍然是相同的。