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

时间:2013-03-26 12:41:03

标签: excel vbscript

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

objSheet.Cells(rowNum, colNum).Value

要获取单元格值,这允许我对列号进行数学运算,例如:添加三个以跨三列移动。但在某些情况下,我想通过字母指定哪些列:

objSheet.Cells(4, E).Value

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

我已经在互联网上看到了很多功能,并且反过来做了相反的事情,但是没有找到以这种方式进行转换的功能。

由于

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

没有vba:

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

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

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

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

希望这有帮助。

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