Excel-将列字母转换为数字等效vbs

Excel-将列字母转换为数字等效vbs,excel,vbscript,Excel,Vbscript,我正在编写一个vbs脚本,从excel电子表格中提取一些数据。当前正在使用该功能: objSheet.Cells(rowNum, colNum).Value 为了获得单元格值,这允许我对列号进行数学计算,例如,添加三个以跨三列移动。但在某些情况下,我希望通过字母指定要获取的列: objSheet.Cells(4, E).Value 因此,我需要编写一个vbs函数来将列字母转换为数字E=>5。需要能够处理超过26列宽的电子表格 我在互联网上看到了很多功能,所以做了相反的事情,但没有发现很多这样

我正在编写一个vbs脚本,从excel电子表格中提取一些数据。当前正在使用该功能:

objSheet.Cells(rowNum, colNum).Value
为了获得单元格值,这允许我对列号进行数学计算,例如,添加三个以跨三列移动。但在某些情况下,我希望通过字母指定要获取的列:

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

我在互联网上看到了很多功能,所以做了相反的事情,但没有发现很多这样做的转换


谢谢

此代码将在没有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:

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

=LEFT(ADDRESS(1,3,4)) (returns the column letter for the cell C1=C)
但这仍然不令人满意,因为如果在列C之前插入一列,数字3不会变为4,因此有一个解决方案:

=LEFT(ADDRESS(1,COLUMN(C1),4))
希望这有帮助


例如,当您需要创建指定单元格范围的字符串时,这尤其有用

你说的是vbscript还是VBA?列函数呢?你不能将vb中相当于列(E:E)的内容传递到你的函数中吗?这是在vbscript中使用Excel.Application对象,其中objSheet被定义为:objExcel.ActiveWorkbook.Worksheets(1)谢谢Peter,我已经编辑了你的答案,包含了在vbs中运行的版本(基本上去掉了键入内容)为了未来的谷歌用户,所以这个问题得到了明确的回答。似乎编辑被拒绝了-(您必须在vbscript中省略函数的返回类型,还是代码按原样运行?