多语言展示
当前在线:1765今日阅读:26今日分享:39

如何转换VBA中列的字母和数字表示方法?

在写VBA程序的时候,往往要将列的字母和数字相互转换,根据需要,在使用cells()引用的时候,列需要为数字,而使用range()时,列需要为字母。那么如何将列的字母转换为数字,将数字转换为字母呢?
工具/原料
1

excel

2

vba

方法/步骤
1

将字母表示的列转为数字的方法:假设列标为x,则相应的数字表示的列column值应该为:range(x &1).column

2

例如,例标为r,即r列,则range(r &1).column=18。

3

将数字表示的列转化为字母的方法:例如第v列,用字母表示是多少列呢?公式为:= VBA.Mid(Cells(1, v).Address, 2, Application.WorksheetFunction.Find('$', Cells(1, v).Address, 2) - 2)       可以在单元格中试好再写,不过,vba中函数有自己的表示方法。

4

原理:首先利用cells().address返回单元格的地址,得到的地址是$R$1这种文本格式,然后在得到的单元格地址内找出第二个$符号开始的位置,即Application.WorksheetFunction.Find('$', Cells(1, 18).Address, 2),这个值减去2,则是字元格中字母的长度。最后,用vba.mid()函数将字母取出来。

5

另外,可以使用substitute()函数来操作,这种方法比较巧妙,比如第V列的公式为:= Application.Substitute(Address(1, v, 4), 1, '')

6

如果网友们有更好,更简便的办法,请告诉我。非常感谢。

注意事项

如果有更好的方法,请分享出来。

推荐信息