1

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

objSheet.Cells(rowNum, colNum).Value

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

objSheet.Cells(4, E).Value

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

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

谢谢

4

2 回答 2

3

此代码将在没有 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
于 2013-03-26T12:50:37.840 回答
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))

希望这可以帮助。

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

于 2015-01-26T16:54:36.153 回答