【问题标题】:Naming Cells with Row and Column heading using vba使用 vba 使用行和列标题命名单元格
【发布时间】:2016-10-19 15:39:47
【问题描述】:

我对 vba 了解不多,但我遇到了一项无法手动完成的任务。

我有一张表(很大),我需要从标准 RC 名称格式重命名单元格。

示例:

OCT NOV DEC
Sales   B2    C2    D2
Revnue  B3    C3    D3
Total   B4    C4    D4
Row4    B5    C5    D5
Row5    B6    C6    D6

我想编写一些程序来将单元格名称(不是值)重命名为 Sales_Oct 而不是 B2,并对选定的范围执行此操作并选择要从中读取名称的行和列。

我想要的是创建一个名称,我知道如何通过名称管理器来做到这一点,但问题是名称管理器只允许“名称”是文本而不是来自其他单元格值的引用。我尝试录制宏并进行修改,但无法通过 Activecell.name 或类似的方式进行。

任何帮助将不胜感激

提前致谢

【问题讨论】:

  • 不太清楚细节,但="Row"&row()"_Column"&Column() 不工作吗? “名称”是指创建一个命名范围吗?您能否澄清一下您的意思,或许可以展示您现在的表格,以及您希望它之后的样子?
  • 单元格已经这样命名了,无需手动进行。如果您使用Range("A1").Value,它将返回范围 A1 中的值。
  • 对不起,如果我不清楚。我的意思是让我们说左行单元格命名为销售,顶部单元格命名为 Oct。我希望单元格名称为“sales_Oct”而不是 B2
  • 如果您想按行号和列号引用单元格,请使用 Cells(1,2)(单元格 B1)。
  • 无法更改用于单元格的表示法(A1 或 R1C1 内置选项除外)。如果您想在 Excel 中创建Name(命名范围),可以使用公式功能区中的名称管理器。如果这最终是您想要的,您应该在一个单元格上执行此分配时记录一个宏,然后如果您无法根据您的目的修改它(适用于整个选定范围),请修改您的问题。

标签: excel vba macros


【解决方案1】:

在 OP 澄清后编辑

Option Explicit

Sub main()
    Dim cell As Range

    With Worksheets("MyTable").UsedRange '<-- change "MyTable" to actual name of the worksheet with cells to be renamed
        For Each cell In .Offset(1, 1).Resize(.Rows.Count - 1, .Columns.Count - 1)
            cell.name = Intersect(.Columns(1), cell.EntireRow) & "_" & Intersect(.Rows(1), cell.EntireColumn)
        Next cell
    End With
End Sub

【讨论】:

  • 感谢您的回复。抱歉我的无知,但我没有“主要代码”开始。
  • 据我了解,这将允许我通过列标题和行标题的名称调用单元格值。这不正是我想要的。我正在使用此文件导入成本计算软件,该软件需要将单元格从标准重命名为特定名称。所以目标是更改单元格名称,使其无法以不同的方式调用。
  • 那么你在Names之后,请参阅编辑后的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多