2017-04-04 33 views
2

下面的宏创建i个新工作表并将E13中的总数复制到单元格F6中的“总计”工作表。我们还需要从“资源计算器”单元格E14中获取总数并将其复制到“总计”表单元格F7。寻找一个好的方法来做到这一点的建议。提前致谢!SumForumla:将两个sumformula函数复制到“总计”工作表中的两个不同单元格

Sub Mac() 
    Sheets("total").Visible = True 

    Dim i As Integer, SumFormula As String 
    For i = 1 To Sheet1.Range("A15").Value 
     Sheets("Resource Estimator").Copy After:=Sheets(Sheets.Count) 
     ActiveSheet.Name = "Batch " & i 

     If i = 1 Then 
      SumFormula = "=SUM('" & ActiveSheet.Name & "'!E13" 'begin sum formula 
     Else 
      SumFormula = SumFormula & ",'" & ActiveSheet.Name & "'!E13" 'iterate sum formula 
     End If 
    Next i 

    SumFormula = SumFormula & ")" 'end sum formula 
    ThisWorkbook.Sheets("Total").Range("F6").Formula = SumFormula 'write sum formula to cell F6 
End Sub 
+0

是的,代码中有很多事情要做,你应该循环遍历每一张纸吗?为什么它是一个宏必要的?在我看来,你只是把单元格E13的内容放入一个值中。在代码顶部显式使用选项,它会有所帮助,代码有什么问题?它在哪里破碎? – Lowpar

+0

我有一系列关于“资源估计器”的复选框。用户点击应用的框并根据选择,生成两个总计。通常情况下,项目需要多个复选框表单。上面的代码允许用户生成一定数量的这些复选框表单,这些复选框表单由“A15”中输入的内容决定。然后创建的每张表格将具有相应的“E13”和“E14”中的总数。然后,我们希望有一个“总”表格,在“总计”表格的单元格F6和F7中汇总所有生成的E13和E14。 – djmurray363

回答

1

我会利用3D公式如下:

For i = 1 To Sheet1.Range("A15").Value 
    Sheets("Resource Estimator").Copy After:=Sheets(Sheets.Count) 
    ActiveSheet.Name = "Batch " & i 
Next i 

With Sheets("total") 
    .Visible = True 
    .Range("F6").Formula = "=sum('Batch 1:Batch " & i - 1 & "'!E13)" 
    .Range("F7") = Sheets("Resource Estimator").Range("E14") 
End With 

BTW,留意可能的表名称拼写错误:你的故事讲述了“资源计算器”,但在你的代码中写道:“资源估计”。我认为他们是同一张纸和“资源估算器”,因为它的名字是

+0

++从来不知道他们被称为* 3D公式* ...很好 – CallumDA

+0

@CallumDA,至少我总是发现他们像这样Google搜索! – user3598756

相关问题