excel 获取逻辑列字母

cnh2zyt3  于 2023-03-04  发布在  其他
关注(0)|答案(3)|浏览(122)

我需要得到我在Excel工作表中创建的逻辑列的字母。
当我点击一个单元格,假设H7,有数据23,我能够得到T excel列H,但出于某种商业目的,我想要A,这是第5行对应于一个单元格被选中的字母。如果假设它是56,我想要B。
图2显示了为什么我想要B而不是Excel列I,这是因为如果我插入一个列,我的Excel列字母将改变,但对应于B中逻辑列字母的数字将只保留在B中。

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

如果提取的列字母是H,我需要它下面第5行的值A,依此类推。对于I,它是B,依此类推。
我这样做是为了插入额外的列,excel列字母会改变,但不会改变我的逻辑列字母。
有人能帮帮忙吗?

uxhixvfz

uxhixvfz1#

正如FDavidov所说,如果我们正确理解了您的问题,您可以使用命名范围来实现这一点。
在下面显示的示例中,我突出显示了列A,并在Name Box(红色方块)中键入名称RefThisColumn。我还只选择了单元格A1,并在Name Box中键入RefThisCell
然后,我可以在VBA中使用这些命名范围,而不必更新引用。
在插入列以将命名范围移动到列E(绿色方块)之后,我运行了完全相同的代码,得到了完全相同的结果:

xfyts7mz

xfyts7mz2#

您只想将列号转换为字母,对吗?
在你的Vba代码中,使用Chr()。这会把你输入的数字转换成一个字符。
如果你输入Chr(65),它会返回“A”。你现在只需要加上你的计算就可以到达你想要的字母。
我不明白您到底想要什么,但作为一个示例,假设col是列号变量。
Chr(64+col)将为列1返回A。
但是,如果要为第5列返回A,则需要像Chr(60+col)这样调整它

13z8s7eq

13z8s7eq3#

将H5公式设置为:

=MID(ADDRESS(ROW(H5),COLUMN(H5)-COLUMN($H5)+1),2,LEN(ADDRESS(ROW(H5),COLUMN(H5)-COLUMN($H5)+1))-3)

然后将此公式扩展到其余列。
它获取当前单元格的行和列,生成$H$5的地址,并从中提取H,但它会使所有列相对于H列偏移,因此H变为A,I变为B,依此类推。
如果您只需要A-Z,其他一些解决方案也可以,但这适用于超过26列的情况,如果您需要的话,可以在第27列中提供AA。

相关问题