【发布时间】:2015-05-23 19:22:50
【问题描述】:
我正在处理一个大型 Excel 文件,其中我为单元格定义了大约 2000 个名称。此外,excel 包含公式,这些公式已经输入了对单元格的引用 (A23-B24)。我想通过定义的名称更改单元格引用(而不是 A23-B24 具有 VARIABLE_100-VARIABLE_120)。
我知道这可以通过选择“应用名称”然后从列表中选择定义的名称来实现。因为我有大约 2000 个定义的名称,我想从菜单中一次选择所有名称,但我找不到选项,所以我必须一个一个选择。我一直在寻找是否有在菜单上启用多项选择的选项,但我还没有找到这样的选项。 对我来说,一个解决方法是创建一个宏,该宏适用于选定的公式范围和选定的名称。像这样的:
Sub Macro1()
' Macro1 Macro
Selection.ApplyNames Names:=Array ("ATL_BV_XP", "ATL_BV_XP..EUN", "ATL_PK_XP", _
"ATL_PK_XP..EUN", "CHN_PK_IM", "CHN_PK_IM..EUN", "CHN_PK_IM..SHREUN", _
"E15_AG_AH", "E15_AG_EPA", "E15_AG_SFP", "E15_AG_SFP..CF" _
, "E15_APF_FE"), IgnoreRelativeAbsolute:=True, UseRowColumnNames:=True, _
OmitColumn:=True, OmitRow:=True, Order:=1, AppendLast:=False
End Sub
我的问题是,因为我有大量已定义的名称(在 2000 年左右已经写了两倍),在宏代码中列出所有名称变得非常复杂。我认为可能的解决方法是创建一个包含代码中所有已定义名称的列表。有人知道如何做到这一点吗?我环顾四周,一些代码建议一个循环,而另一些代码则说可以提取一个列表。尽管如此,我还没有找到方法。
【问题讨论】:
-
您是否在寻找 vba 对象模型“名称”:msdn.microsoft.com/en-us/library/ff196278%28v=office.14%29.aspx
-
感谢 Christine Ross 的及时回答,我不是 vba 专家,目前我正在查看以下网站 msdn.microsoft.com/en-us/library/office/ff841280.aspx 可能使用最后一个示例,我可以:首先创建一个列表名称,然后将该列表应用于选定的公式范围,以用相应的名称替换单元格引用。
-
那么您能否更清楚地定义您的问题?在阅读问题时,您似乎想通过使用一些下拉菜单等将名称插入公式。但是在阅读 cmets 时,您似乎已经在公式中有了名称,并且您想将它们更改为实际引用(例如,在您有的公式中)一个名字
name1,你想用Sheet1!A1替换它吗? -
即使手动完成(“公式”>“应用名称”),我也无法更改我的虚拟公式。我怀疑一个错误是 open for over 10 years...
-
感谢您的跟进和回复。实际上,即使在设法通过单击手动选择名称之后,Excel 也经常崩溃。我的解决方案是通过将公式导出为文本和引用来在 CSV 文件中创建字典,然后在 R 中应用三行代码替换。我的选择是留在 Excel 中,但使用替代方案肯定有些流程更容易。尽管如此,我会继续尝试这个选项,很可能应该有一个解决方案。最佳