Excel – 将列号转换为字母平等的vbs

我正在写一个VBS脚本来从Excel电子表格中提取一些数据。 目前使用的function有:

objSheet.Cells(rowNum, colNum).Value 

为了得到单元格值,这允许我在列号上进行math运算,例如添加三个来移动三列。 但在某些情况下,我想指定通过字母获取哪些列:

 objSheet.Cells(4, E).Value 

因此,我需要编写一个vbs函数来将列字母转换为数字E => 5.需要能够处理超过26列宽的电子表格。

我已经看到了互联网上的许多function,所以做相反的事情,但没有发现这样做的转换。

谢谢

此代码将运行没有Excel:

 Function ColNum(strCol As String) As Integer Dim i As Integer, col As Integer For i = Len(strCol) To 1 Step -1 col = col + (Asc(Mid(strCol, i, 1)) - 64) * (26 ^ (i - 1)) Next ColNum = col End Function 

另外,在Excel中,你可以简单地使用这个:

 Function ColNum(strCol As String) As Integer ColNum = Range(strCol & "1").Column End Function 

无vba:

要将列号转换为字母,请input以下公式:

 =LEFT(ADDRESS(1,3,4)) (returns the column letter for the cell C1=C) 

但是这仍然不能令人满意,因为如果在列C之前插入列,数字3不会变为4,所以这里是一个修正:

 =LEFT(ADDRESS(1,COLUMN(C1),4)) 

希望这可以帮助。

当您需要创build指定单元格范围的string时,这特别有用。