我正在制作一张包含17张纸的电子表格,其中2-16页包含我感兴趣的发票数据。
例如,如果表格(2)第4栏中的某人姓名出现在表格(1)中,那么我想要计算他们收取的金额(可在表格第10栏中找到)(2) )。电子表格2-16的布局完全相同,除了它们包含不同数量的条目且数据不同。
我有三个$ sum,我有兴趣计算,然后显示在每张纸的顶部:两笔钱代表两个不同的分区,最后一个是简单的总数(w_sum,smb_sum和total)
我遇到的问题是每张工作表显示表格(2)中的总和,而不是他们自己的。但是,当我删除外部For循环并手动更改工作表编号时,我得到正确的值。我希望我对我的问题很清楚,我将非常感谢任何帮助。我前几天才开始玩VBA,所以我对语法不太熟悉,但我认为我的逻辑是正确的或者几乎是正确的。
Sub GetSums()
Dim i As Integer
Dim j As Integer
Dim w_sum As Currency
Dim smb_sum As Currency
Dim total As Currency
w_sum = 0
smb_sum = 0
total = 0
i = 15
For j = 2 To 17
Sheets(j).Activate
Do Until Cells(i, 6).Value = 0
If Not IsError(Application.Match(Cells(i, 4).Value, Sheets(1).Range("D2:D91"), 0)) Then
w_sum = w_sum + Cells(i, 10).Value
End If
If Not IsError(Application.Match(Cells(i, 4).Value, Sheets(1).Range("E2:E91"), 0)) Then
smb_sum = smb_sum + Cells(i, 10).Value
End If
total = total + Cells(i, 10).Value
i = i + 1
Loop
Cells(10, 4).Value = w_sum
Cells(11, 4).Value = smb_sum
Cells(12, 4).Value = total
Next j
End Sub
答案 0 :(得分:0)
您可以将变量声明为工作表:
Dim ws As Worksheet
然后,您可以将Sheets(j).Activate
绑定到工作表编号ws
,而不是调用j
:
Set ws = Sheets(j)
然后你可以使用ws.cell(i, 4).value
代替cells(i, 4).value
,而isGrounded
往往表现得任意。
希望这有帮助