代码之家  ›  专栏  ›  技术社区  ›  Selrac

在多个列中具有多个条件和/或逻辑的SUMIF

  •  1
  • Selrac  · 技术社区  · 6 年前

    我找到了 here 例如,使用多个条件和/或逻辑来执行SUMIF,但我尝试使用多个条件和/或逻辑来执行多个列,但它不起作用。

    下面是一个例子。基于此数据集:

    A1  B1  C1  D1
    B   X   u   11
    B   X   u   22
    A   X   t   22
    B   X   t   22
    

    我使用以下公式:

    =SUM(SUMIFS(D:D,B:B,"X",A:A,{"A","B"},C:C,{"t","u"}))
    

    公式的结果是55,但应该是77

    如果我更改数据集的最后一行,它将正确计算如下:

    A1  B1  C1  D1
    B   X   u   11
    B   X   u   22
    A   X   t   22
    A   X   t   22  --> Column A1 value changed from B to A
    

    是否可以有多个列具有多个或多个值?

    2 回复  |  直到 6 年前
        1
  •  2
  •   user4039065    6 年前

    尝试,

    =SUM(SUMIFS(D:D, B:B, "X", A:A, {"A","B"}, C:C, TRANSPOSE({"t","u"})))
    

    通过更改读取第二个条件数组的“方向”,可以获得所有可能的组合,而不是成对的组合。

        2
  •  2
  •   Tom Sharpe    6 年前

    我和@jeped在同一条线上工作,但想到了

    =SUM(SUMIFS(D:D,B:B,"X",A:A,{"A","B"},C:C,{"t";"u"}))
    

    以更改第二个数组的方向。

    注: 我不知道您将如何轻松地扩展到包含另一组标准,因为您需要另一个“维度”。据我所知,它必须看起来像这样

    =SUM(SUMIFS(D:D,B:B,{"X","X","X","X","Y","Y","Y","Y"},A:A,{"A","A","B","B","A","A","B","B"},C:C,{"t","u","t","u","t","u","t","u"}))