获取逻辑列字母

时间:2016-11-29 08:41:00

标签: excel vba excel-vba ado

我需要获取我在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列字母会改变,但它不会改变我的逻辑列字母。

请有人帮忙吗?image1 image2

2 个答案:

答案 0 :(得分:2)

正如FDavidov所说 - 如果我们正确理解您的问题,您可以使用命名范围来实现此目的。

在下面显示的示例中,我突出显示了列A,并在RefThisColumn(红色方块)中键入了名称Name Box。我还选择了单元格A1并在RefThisCell中输入了Name Box

然后,我可以在VBA中使用这些命名范围,而无需更新引用 在插入列以将我的命名范围移动到列E(绿色方块)后,我运行完全相同的代码并得到完全相同的结果:
enter image description here

答案 1 :(得分:0)

您只想将列号转换为字母,对吗?

在您的Vba代码上,使用Chr()。这会将您输入的数字转换为字符。

如果你放Chr(65),它将返回" A"。您只需要立即添加计算以达到所需的字母。

我不明白你想要什么,但作为一个例子,我们可以说col是你的列号变量。

Chr(64+col)将为第1列返回A.

但是,如果您想为第5列返回A,则可以像Chr(60+col)

一样调整它