获取逻辑列字母

我需要得到我在Excel表中创build的逻辑列的字母。

当我点击一个单元格时,假设H7有数据23,我可以得到Te excel列H,但是为了一些商业目的我想要A,那就是第五行中对应于一个被select的单元格的字母。如果假设是56,我想B.

图2显示了为什么我要B而不是excel的列I,这是因为如果我插入一个列,我的Excel列的字母将会改变,但是对应于B的逻辑列字母的数字将保留在B中。 我能够使用代码获得excel列的字母:

Public Function ColumnLetters(rInput As Range) As String ColumnLetters = Split(rInput.Address, "$") (1) End Function 

如果提取的列字母是H,我需要在它下面的第5行的值,即A等等。因为我是B,依此类推。

我已经这样做,插入额外的列,excel列字母将改变,但它不会改变我的逻辑列字母。

有人可以请帮忙吗? 此搜索图像2

正如FDavidov所说 – 如果我们正确理解你的问题,你可以使用命名的范围来实现这一点。

在下面的示例中,我突出显示了列A,并在Name Box (红色正方形)中键入名称RefThisColumn 。 我也select了单元格A1,并在Name Box键入了RefThisCell

然后,我可以在VBA中使用这些命名的范围,而不必更新引用。
插入列移动我的命名范围到E列(绿色方块)后,我跑完全相同的代码,并得到完全相同的结果:
在这里输入图像描述

你只是想把一个列号转换成一个字母,对吧?

在你的VBA代码上,使用Chr() 。 这会将您input的数字转换为字符。

如果你把Chr(65)它会返回“A”。 你只需要现在添加你的计算来达到你想要的字母。

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

Chr(64+col)将返回A列1。

但是,如果你想返回列5的A,你可以调整它像Chr(60+col)