与当前工作簿中的工作表名称相关的公式

时间:2015-11-26 13:29:34

标签: excel vba excel-vba

说有

  1. wbA.sheet1wbA.sheet2(工作簿A包含sheet1和sheet2)
  2. wbB.sheet1wbB.sheet2(工作簿B包含sheet1和sheet2)
  3. 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复制到任何其他工作簿时,我希望将其调整为当前工作簿中的小时费率,而不是从初始工作簿中拖动费率。

1 个答案:

答案 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

另一种解决方法是在公式中使用系数定义的名称。它们将更改为新工作簿中定义的名称,受到一个恼人的消息框提示,该提示没有"是全部"选项!