Vba 使用宏计算每列、每行的总计

Vba 使用宏计算每列、每行的总计,vba,excel,subtotal,Vba,Excel,Subtotal,我需要一些VBA方面的帮助。我有这张纸: Game Room City Machines_week_1 Played_week_1 Won_week_1 Machines_week_2 Played_week_2 Won_week_2 A Julia San Francisco 3 1200 1100 2

我需要一些VBA方面的帮助。我有这张纸:

Game     Room     City          Machines_week_1     Played_week_1     Won_week_1     Machines_week_2     Played_week_2     Won_week_2
A        Julia   San Francisco     3                    1200            1100             2                   500              250
B        Julia   San Francisco     4                    200            100             1                   500              250
C        Julia   San Francisco     3                    500            100             5                   600              250
D        Julia   San Francisco     1                    200            50             2                   1000              750
B        Carla   San Francisco     1                    1000            600             2                   1500              500
C        Carla   San Francisco     3                    800            400             3                   500              250
E        Carla   San Francisco     6                    1200            1100             4                   600              300
A        Jaime   Rio de Janeiro     1                    200            50             2                   90              50
C        Jaime   Rio de Janeiro     3                    900            600             3                   500              250
(....)
我想在表格的最后计算每周每个城市和每场比赛的总数,忽略房间。比如:

Game     Room     City          Machines_week_1     Played_week_1     Won_week_1     Machines_week_2     Played_week_2     Won_week_2
 (...)
A        Total   San Francisco     3                    1200            1100             2                   500              250
B        Total   San Francisco     5                    1200            700             3                   3000              750
C        Total   San Francisco     6                    1300            500             8                   1100              500
D        Total   San Francisco     1                    200            50             2                   1000              750
E        Total   San Francisco     6                    1200            1100             4                   600              300
A        Total   Rio de Janeiro     1                    200            50             2                   90              50
C        Total   Rio de Janeiro     3                    900            600             3                   500              250
(....)
For p = 1 To LastRow

If Range("CA1").Offset(i, 0).Value <> 2 Then ( I have this much of columns with data and weeks)
a = Range("A1").Offset(p, 0).Value
c = Range("C1").Offset(p, 0).Value


For i = 1 To LastRow
    If Range("A1").Offset(i, 0).Value = a And Range("C1").Offset(i, 0).Value = c Then

    Machines1 = Range("D1").Offset(i, 0).Value + Machines1
    Played1 = Range("E1").Offset(i, 0).Value + Played1
    (....)
    Machines2 =  Range("G1").Offset(i, 0).Value + Machines2
    Played2 = Range("H1").Offset(i, 0).Value + Played2
    Range("CA1").Offset(i, 0).Value = 2 (this column is empty, Im using it for a test to see if I have calculated this combination of city and game already)
    End If

    Next i

       lastn = Range("A65536").End(xlUp).Row
        Range("A1").Offset(lastn, 0).Value = a
        Range("B1").Offset(lastn, 0).Value = "Total"
        Range("C1").Offset(lastn, 0).Value = c
        Range("D1").Offset(lastn, 0).Value = Machines1
        Range("E1").Offset(lastn, 0).Value = Played1
        (...)
        Range("G1").Offset(lastn, 0).Value = Machines2
        Range("H1").Offset(lastn, 0).Value = Played2
        (...)

        Machines1=0
        Played1=0
        Machines2=0
        Played2 = 0
        (....)
        End If

        Next p
我正在尝试类似的东西:

Game     Room     City          Machines_week_1     Played_week_1     Won_week_1     Machines_week_2     Played_week_2     Won_week_2
 (...)
A        Total   San Francisco     3                    1200            1100             2                   500              250
B        Total   San Francisco     5                    1200            700             3                   3000              750
C        Total   San Francisco     6                    1300            500             8                   1100              500
D        Total   San Francisco     1                    200            50             2                   1000              750
E        Total   San Francisco     6                    1200            1100             4                   600              300
A        Total   Rio de Janeiro     1                    200            50             2                   90              50
C        Total   Rio de Janeiro     3                    900            600             3                   500              250
(....)
For p = 1 To LastRow

If Range("CA1").Offset(i, 0).Value <> 2 Then ( I have this much of columns with data and weeks)
a = Range("A1").Offset(p, 0).Value
c = Range("C1").Offset(p, 0).Value


For i = 1 To LastRow
    If Range("A1").Offset(i, 0).Value = a And Range("C1").Offset(i, 0).Value = c Then

    Machines1 = Range("D1").Offset(i, 0).Value + Machines1
    Played1 = Range("E1").Offset(i, 0).Value + Played1
    (....)
    Machines2 =  Range("G1").Offset(i, 0).Value + Machines2
    Played2 = Range("H1").Offset(i, 0).Value + Played2
    Range("CA1").Offset(i, 0).Value = 2 (this column is empty, Im using it for a test to see if I have calculated this combination of city and game already)
    End If

    Next i

       lastn = Range("A65536").End(xlUp).Row
        Range("A1").Offset(lastn, 0).Value = a
        Range("B1").Offset(lastn, 0).Value = "Total"
        Range("C1").Offset(lastn, 0).Value = c
        Range("D1").Offset(lastn, 0).Value = Machines1
        Range("E1").Offset(lastn, 0).Value = Played1
        (...)
        Range("G1").Offset(lastn, 0).Value = Machines2
        Range("H1").Offset(lastn, 0).Value = Played2
        (...)

        Machines1=0
        Played1=0
        Machines2=0
        Played2 = 0
        (....)
        End If

        Next p
p=1至最后一行的

如果Range(“CA1”).Offset(i,0).Value为2,那么(我有很多列包含数据和周数)
a=范围(“A1”)。偏移量(p,0)。值
c=范围(“C1”)。偏移量(p,0)。值
对于i=1到最后一行
如果范围(“A1”)。偏移量(i,0)。值=a,范围(“C1”)。偏移量(i,0)。值=c,则
机器1=范围(“D1”)。偏移量(i,0)。值+机器1
播放1=范围(“E1”)。偏移量(i,0)。值+播放1
(....)
机器2=范围(“G1”)。偏移量(i,0)。值+机器2
Played2=范围(“H1”)。偏移量(i,0)。值+Played2
Range(“CA1”).Offset(i,0).Value=2(此列为空,我使用它进行测试,以查看我是否已经计算了城市和游戏的组合)
如果结束
接下来我
lastn=范围(“A65536”)。结束(xlUp)。行
范围(“A1”)。偏移量(lastn,0)。值=a
范围(“B1”).偏移量(lastn,0).Value=“总计”
范围(“C1”)。偏移量(lastn,0)。值=c
范围(“D1”)。偏移量(lastn,0)。值=机器1
范围(“E1”)。偏移量(lastn,0)。值=播放1
(...)
范围(“G1”)。偏移量(lastn,0)。值=机器2
范围(“H1”)。偏移量(最后N,0)。值=播放的2
(...)
机器1=0
播放1=0
机器2=0
播放2=0
(....)
如果结束
下一个p
但它不起作用。它仍然在为每个房间重复游戏(总数是正确的,但它们出现的次数与城市中的房间数量相同)。如果有人能帮助我,我将不胜感激。
谢谢大家!

作为替代方法,您可以在Excel中使用:

使用的数据:

数据透视表输出:


您是否想过使用数据透视表或小计功能?