【发布时间】:2015-11-26 13:29:33
【问题描述】:
说有
-
wbA.sheet1和wbA.sheet2(带有 sheet1 和 sheet2 的工作簿 A) -
wbB.sheet1和wbB.sheet2(带有 sheet1 和 sheet2 的工作簿 B)
在wbA.sheet1 中,单元格A1 具有公式=Sheet2!B1。
当您将此单元格A1 复制到wbB.sheet1 时,它将与wbA.sheet2 中的B1 相关。
但是,是否可以更改公式(可能使用 VBA)以使单元格 A1 与工作表 "Sheet2"在当前所在的工作簿中相关?
这意味着无论A1被复制到哪个工作簿单元格中,它都会在此工作簿中搜索工作表"Sheet2"并从中获取B1。并且不给REF!错误。
关于我的案例的更多细节:
在单元格A1 的wbA.sheet1 公式中计算工人的日薪。它是以下产品:
- 上一个单元格(您在其中输入小时数)和
- 小时费率系数
最新的是wbA.sheet2 中的值。您可以将任何wb 中的sheet2 视为系数的主列表。但是,不同的工作簿在sheet2 中具有不同的系数。因此,当我将单元格 A1 复制到任何其他工作簿时,我希望将其调整为当前工作簿中的小时费率,而不是从初始工作簿中拖动费率。
【问题讨论】:
-
这是一次性的事情还是动态的事情? (即您需要更改这些引用一次,还是需要它们随时更改?)如果是前者,那么您可以通过 GUI 使用查找和替换来删除链接到差异的引用部分工作簿。如果是后者,那么类似 INDIRECT() 函数的东西会起作用,但不推荐(性能开销,文本是静态链接)。您能否将您的用例描述为您正在从一个稍微不正统的角度处理某些事情?
-
你需要使用类似
[Workbook_Name]SheetName!Cell的东西。如果工作表的名称中有空格,则应像'Sheet Name'这样将其包围,您还可以在放置工作簿名称的位置包含工作簿的完整路径! ;) -
@R3uK 这与 OP 想要的相反,我认为。它总是引用特定的工作簿,而 OP 希望它始终是相对的
-
@Cor_Blimey:我的错!由于 pasteSpecial 公式对此不起作用,您是否尝试将
Cells(1,1).Formula作为字符串传输? -
有趣的事实,定义的名称可以在每个中使用(例如,名称 Sheet2 cell1 类似
_coefficient1)然后一个公式将可选地指向目标名称,所以如果第二个工作簿有一个名为同样的东西,复制过来的任何公式都可以使用它