说有
wbA.sheet1
和wbA.sheet2
(工作簿A包含sheet1和sheet2)wbB.sheet1
和wbB.sheet2
(工作簿B包含sheet1和sheet2)在wbA.sheet1
中,单元格A1
的公式为=Sheet2!B1
。
将此单元格A1
复制到wbB.sheet1
时,它将与B1
中的wbA.sheet2
相关。
但是,是否可以更改公式(可能使用VBA),以便单元格A1
与其当前位于的工作簿中的工作表"Sheet2"
相关?
这意味着无论复制哪个工作簿单元A1
,它都会在此工作簿中搜索工作表"Sheet2"
并从中获取B1
。并且不会给出REF!
错误。
有关我案例的更多详情:
在单元wbA.sheet1
的{{1}}公式中计算工人的日薪。它是以下产品:
最新版本是A1
中的值。您可以将任何wbA.sheet2
中的sheet2
视为系数的主列表。但是,不同的工作簿在wb
中具有不同的系数。因此,当我将单元格sheet2
复制到任何其他工作簿时,我希望将其调整为当前工作簿中的小时费率,而不是从初始工作簿中拖动费率。
答案 0 :(得分:1)
解决方法可能是使用VBA复制范围的确切公式。
为方便起见,你可以给它一个热键。选择要复制的单元格然后运行宏。它会提示您选择要将其复制到的位置。
Sub CopyExactFormula()
Dim sRng As Range, dRng As Range
Set sRng = Selection.Areas(1)
On Error Resume Next
Set dRng = Application.InputBox("Select destination output range (Top left cell)", "Output range", , , , , , 8)
If dRng Is Nothing Then Exit Sub
On Error GoTo 0
Set dRng = dRng.Parent.Range(dRng.Cells(1, 1), dRng.Cells(sRng.Rows.Count, sRng.Columns.Count))
dRng.Formula = sRng.Formula
End Sub
另一种解决方法是在公式中使用系数定义的名称。它们将更改为新工作簿中定义的名称,受到一个恼人的消息框提示,该提示没有"是全部"选项!