在写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
如果网友们有更好,更简便的办法,请告诉我。非常感谢。
注意事项
如果有更好的方法,请分享出来。