【问题标题】:Getting the logical column letters获取逻辑列字母
【发布时间】:2017-04-13 04:11:26
【问题描述】:

我需要获取我在 Excel 表中创建的逻辑列的字母。

当我点击一个单元格时,假设 H7,它有数据 23,我能够得到 Te excel 列 H,但出于某些商业目的,我想要 A,即第 5 行中对应于一个单元格的字母选择。如果假设是 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 列字母会改变,但不会改变我的逻辑列字母。

有人可以帮忙吗?

【问题讨论】:

  • 你能举个例子,它不会改变你的逻辑列字母吗?
  • 我不明白你想要达到什么目的???
  • 我想引用我的目标单元格列。所以我中的数据总是可以通过与 I 对应的第 5 行中的逻辑列字母来引用。即使我在 I 之前插入列并且 I 成为 J in excel 列,我的第 5 行字母 B 将完好无损。这就是为什么我试图获取我在第 5 行创建的列字母而不是 excel 列字母
  • 我想添加一张图片,以便您可以更好地尝试一次,但我是新手,因为缺少徽章,我无法添加图片:(
  • 让我明白。您对特定列的第 5 行感兴趣,例如 F,即使您添加一列(例如在 B 和 C 之间,这样您的 F 将变为 G)。如果是这种情况,您可以简单地NAME 列(在最左上角的字段中输入名称)。您还可以命名列的第一个单元格,然后计算该列中所需单元格的地址(间接引用)。您还可以从 NAME 中提取其字母或列号。

标签: vba excel ado


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    如果您输入Chr(65),它将返回“A”。您现在只需添加您的计算即可获得您想要的字母。

    我不明白你到底想要什么,但举个例子,假设col 是你的列号变量。

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

    但是,如果您想为第 5 列返回 A,您可以像 Chr(60+col) 那样调整它

    【讨论】:

    • 我已经添加了图片和解释。请参考我编辑的问题。我希望你现在明白了。 :(
    猜你喜欢
    • 2010-10-21
    • 1970-01-01
    • 2015-05-14
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多