动态页数之和

时间:2015-12-17 20:37:13

标签: excel-vba loops vba excel

我有一个宏来创建一个工作簿,其中包含多个按日期命名的工作表,例如2015年12月12日,12-02-2015。数据手动输入到这些工作表中。最后一个工作表名称是" TOTAL"。每个月工作表的数量和名称都会有所不同。我正在尝试编写一段代码,将所有工作表中的数据汇总到工作表中名为" Total"的单元格中。我的想法是使用循环来完成它,但它不起作用,尽管宏运行时没有显示错误消息。 应该出现在" B2"中的公式" Total"宏完成运行后的工作表不存在,所以我的假设是求和仅在宏执行期间有效。我不知道如何进入"总和"公式进入" B2" " Total"工作表。我真的很感激能够指出正确方向的任何提示。下面是一段不起作用的代码:

Sub Test()

Dim i as Long

For i = 1 To Worksheets.Count - 1

             Worksheets("TOTAL").Range("B2").Formula = Application.WorksheetFunction.Sum(Worksheets(i).Range("B2"))

       Next i

       Worksheets(i).Range("B2").Value = Worksheets("TOTAL").Range("B2").Value

End Sub

2 个答案:

答案 0 :(得分:2)

您可以定义自定义的用户定义函数(UDF),该函数在单元格中输入时,会对同一工作簿中所有其他工作表中的相应单元格进行汇总。我们称之为AutoSum

Function AutoSum() As Variant
    AutoSum = 0
    For Each ws In Worksheets
        If Not ws Is Application.ThisCell.Parent Then AutoSum = AutoSum + ws.Range(Application.ThisCell.Address)
    Next
End Function

然后您可以在公式中的任何单元格中使用它:=AutoSum()

答案 1 :(得分:0)

试试这个;

Sub Test()

Dim i As Long
Dim t As String


For i = 1 To Worksheets.Count - 1
    If i = 1 Then
        t = "=Sum('" & Worksheets(i).Name & "'!B2"
    Else
        t = t & ",'" & Worksheets(i).Name & "'!B2"
    End If
Next i

Worksheets("TOTAL").Range("B2").Formula = t & ")"

End Sub

它构建公式,因为它循环然后将公式分配给单元格。