【问题标题】:Removing external reference from named range in copied sheet从复制工作表中的命名范围中删除外部参考
【发布时间】:2016-08-22 09:26:58
【问题描述】:

我有一堆通过导出两个工作表创建的工作簿 - 数据表本身和一个名为 Lookups 的工作表,其中包含数据验证下拉列表的命名范围。

我遇到的最大问题是复制过程导致那些命名范围不是指新工作表而是指原始工作簿 - 其中TimeUnits 范围应该定义为=Lookups!$D$2:$D$4,居然变成了='\\sestofp001p\users\SEANP\WWL\Other Projects\20160531 - Ops - Port data project\Data Collection\[Port Data.xlsm]Lookups'!$D$2:$D$4

这不会是一个大问题,除了 312 个不同的工作簿上有 26 个范围,所以我正在寻找一种方便的方法来删除多余的位以将其变成该书的本地参考。有什么建议吗?

【问题讨论】:

  • 搜索和替换允许您替换公式中的数据。
  • 你可以遍历Workbook.Names集合
  • @iDevlop,据我所知,它只在实际工作表中执行公式 - 它似乎不会更改命名范围引用。我有什么特别需要寻找的吗?
  • 我正在考虑将“someExternalRef!A2b5”替换为 a2b5
  • @AndrewPerry 在下面的回答中尝试该方法

标签: excel named-ranges vba


【解决方案1】:

您是否尝试过定义 Name 变量并通过 VBA 创建它? 就像我下面的例子一样:

Sub Add_NamedRange()

Dim TimeUnits_NamedRange            As Name

' create the named range , modify This Workbook to your new created workbook
Set TimeUnits_NamedRange = ThisWorkbook.Names.Add("TimeUnits", ThisWorkbook.Sheets("Lookups").Range("$D$2:$D$4"))

End Sub

【讨论】:

  • 啊,太好了——这正是我所希望的!它会覆盖/编辑现有范围,还是我需要先明确删除它们?
  • 它将覆盖现有的同名命名范围
猜你喜欢
  • 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
相关资源
最近更新 更多