【发布时间】:2021-05-05 17:24:20
【问题描述】:
通常接受的方法是执行以下操作
数字到字母
public function numberToLetter(ByVal i as long) as string
Dim s as string: s = cells(1,i).address(false,false)
numberToLetter = left(s,len(s)-1)
end function
给数字的信
Public Function letterToNumber(ByVal s As String) As Long
letterToNumber = Range(s & 1).Column
End Function
然而,这些都不是特别理想的,因为在每种情况下,我们都在创建一个对象,然后在该对象上调用一个属性访问器。有更快的方法吗?
【问题讨论】:
-
您没有创建对象 - 在这两种情况下,单元格都已经存在。如果您确实需要在列字母和索引之间进行映射,那么这对我来说似乎很好:如果您尝试映射不存在的列,则会出错。
-
@TimWilliams 我很确定
range(...)amdcells(...)会创建一个对象,或者更确切地说,我很确定不会为您打开的每个电子表格创建一些2147483647对象(一个用于整个电子表格中的每个单元格),因为这会非常慢。 -
好的,公平点...