我正在编写一个vbs脚本来从excel电子表格中提取一些数据。目前使用的功能:
objSheet.Cells(rowNum, colNum).Value
要获取单元格值,这允许我对列号进行数学运算,例如:添加三个以跨三列移动。但在某些情况下,我想通过字母指定哪些列:
objSheet.Cells(4, E).Value
因此,我需要编写一个vbs函数来将列字母转换为数字E => 5.需要能够处理超过26列宽的电子表格。
我已经在互联网上看到了很多功能,并且反过来做了相反的事情,但是没有找到以这种方式进行转换的功能。
由于
答案 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))
希望这有帮助。
当您需要创建指定单元格范围的字符串时,这尤其有用。