我需要获取我在Excel工作表中创建的逻辑列的字母。
当我点击一个单元格时,假设有数据23的H7,我可以得到Te excel列H,但出于某些商业目的,我想要A,这是第5行中对应于单元格的字母。如果它是56,我想要B。
图2显示了为什么我想要B而不是excel第一列,这是因为如果我插入一列我的excel列字母将会改变,但是对应于B中的逻辑列字母的数字将仅保留在B中。 我可以使用代码获取excel列字母:
Public Function ColumnLetters(rInput As Range) As String
ColumnLetters = Split(rInput.Address, "$") (1)
End Function
如果提取的列字母是H,我需要在它下面的第5行中的值是A,依此类推。对于我它是B,依此类推。
我这样做是为了插入额外的列,excel列字母会改变,但它不会改变我的逻辑列字母。
请有人帮忙吗?
答案 0 :(得分:2)
正如FDavidov所说 - 如果我们正确理解您的问题,您可以使用命名范围来实现此目的。
在下面显示的示例中,我突出显示了列A,并在RefThisColumn
(红色方块)中键入了名称Name Box
。我还选择了单元格A1并在RefThisCell
中输入了Name Box
。
然后,我可以在VBA中使用这些命名范围,而无需更新引用
在插入列以将我的命名范围移动到列E(绿色方块)后,我运行完全相同的代码并得到完全相同的结果:
答案 1 :(得分:0)
您只想将列号转换为字母,对吗?
在您的Vba代码上,使用Chr()
。这会将您输入的数字转换为字符。
如果你放Chr(65)
,它将返回" A"。您只需要立即添加计算以达到所需的字母。
我不明白你想要什么,但作为一个例子,我们可以说col
是你的列号变量。
Chr(64+col)
将为第1列返回A.
但是,如果您想为第5列返回A,则可以像Chr(60+col)