代码之家  ›  专栏  ›  技术社区  ›  Gabe Carvajal

Sumif循环通过数据组vba

  •  0
  • Gabe Carvajal  · 技术社区  · 7 年前

    如果在其他地方得到答复,请告知。。。

    我试图提出一个sumif,它将D列相加,如果a列criteria=“PL211010”&“PL203000”。问题是我需要宏按组求和,而不是整张表(见图) enter image description here

    甚至不知道从哪里开始,我应该使用For Next循环吗?或者循环是必要的?

    重要提示 这个轴心每月都会动态变化。账户不是静态的,它们可以增加或减少。因此,放置静态公式将不起作用。。。

    下面的代码是我尝试让它工作的代码,只是尝试给出一个基线。

    Dim nRowMax, nRowNow As Integer
    
    Application.ScreenUpdating = False
    
    Cells(4, 1).Select
    Selection.End(xlDown).Select
    nRowMax = Selection.Row
    
    For i = nRowMax To 4 Step -1
    If Left(Cells(i, 1), 8) = "PL211010" & "PL203000" Then
            WorksheetFunction.SumIf (Cells(i, 4))
    End If
    Next i
    
    Application.ScreenUpdating = True
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Scott Holtzman    7 年前

    如@ashleedawg所述,这可以在没有VBA的情况下通过直接在数据源上编写公式来实现,这可能是最简单的选择,或者通过直接在枢轴上编写公式来实现。我在下面做了一个模型示例,它将适用于您提供的案例:

    以下是一个截图:

    enter image description here

    1. 按照我在单元格D1的图片中的指示更改数据透视表布局
    2. 使用单元格H4中的公式: =SUM(SUMIFS($F$4:$F$11,$D$4:$D$11,D4,$E$4:$E$11,{"A","B"}))
    3. 根据需要向下拖动。

    现在,对我来说已经很晚了,我做得很快,所以我意识到这是重复的,有点混乱。为此,您可以简单地组织一个单一元素的列表,并从该列表中写出公式。

    或者,可以通过修改我提供的公式的范围参数,直接从数据源中写出公式。