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时,这特别有用。