在工作表之间复制公式范围

时间:2018-11-28 10:04:35

标签: excel vba

我有一系列公式需要在所有工作表中复制。范围从AB1:AC5开始。公式需要在工作表中使用,并取自称为“模板”的工作表,这是工作簿中的第一张工作表。我相信我已经选择了范围,它将继续仅从“模板”中复制。我如何将其粘贴到其他每张纸上?

Sub FillSheets()
 Dim sh As Worksheet
 Dim rng As Range

 Dim worksheetsToSkip As Variant

 worksheetsToSkip = Array("Aggregated", "Collated Results", "Template", "End")
 Set rng = Sheet1.Range("AB1:AC5")

 For Each ws In Worksheets
    If IsError(Application.Match(ws.Name, worksheetsToSkip, 0)) Then


End Sub

2 个答案:

答案 0 :(得分:1)

距离您很近,因为您必须使用Formula对象的Range属性和对“源”范围Address的引用

此外,您的变量名不匹配:声明为sh As Worksheet,但随后使用了ws

尝试一下:

Sub FillSheets()
    Dim sh As Worksheet
    Dim rng As Range

    Dim worksheetsToSkip As Variant

    worksheetsToSkip = Array("Aggregated", "Collated Results", "Template", "End")
    Set rng = Sheet1.Range("AB1:AC5")

    For Each sh In Worksheets
       If IsError(Application.Match(sh.Name, worksheetsToSkip, 0)) Then sh.Range(rng.Address).Formula = rng.Formula
    Next
End Sub

答案 1 :(得分:0)

感叹号问题

包含工作表引用的单元格

有一个名为Template的工作表。您可以将公式A1写入单元格=A2+A3。您也可以写=Template!A2+A3=Template!A2+Template!A3。在所有三种情况下,结果都是相同的。但是,当您将Paste Special公式=A2+A3放入另一张纸时,每种情况下您将获得不同的公式,因此结果也可能不同。此代码通过仅粘贴第一个方案(=Template!A2+A3)消除了这种可能性。

Excel何时将这些工作表引用写入工作表?

在我们的示例中,当选择Template选项卡时可能发生=,在编辑栏中输入等号(Template),单击了另一个选项卡,然后点击A2+A3标签,输入ENTER并按下=Template!A2+Template!A3
选择Template选项卡时可能发生=的情况,在编辑栏中输入等号(Template),单击另一个选项卡,然后单击{{1} }标签被单击,A2被选择,另一个标签被单击,(+)被输入,Template标签被再次单击,A3被选择并且{ {1}}被按下。

ENTER