【问题标题】:SUMPRODUCT with multiple criteria that have multiple variablesSUMPRODUCT 具有具有多个变量的多个条件
【发布时间】:2015-10-17 05:04:00
【问题描述】:

背景:16 名身穿不同颜色夹克的男士正在参加派对,其中一些人的名字相同。在实际工作表中将有数千行。一个非常简单的例子:

    A           B                   C
1   First Names Color of jackets    Shape of Face
2   John        yellow              round
3   Alan        purple              round
4   Sam         red                 round
5   Tom         blue                oblong
6   John        blue                oblong
7   Tom         yellow              oblong
8   Tom         yellow              oblong
9   Sam         red                 oblong
10  Alan        red                 oblong
11  Timothy     blue                diamond
12  Sam         purple              diamond
13  Sam         red                 diamond
14  Alan        red                 diamond
15  Timothy     red                 diamond
16  John        blue                triangle
17  Timothy     blue                triangle

我需要做的是计算某些类别中的唯一值(有时在多个类别中,AND 或 OR)。例如,我现在需要计算黄色夹克的圆脸男人的不同名字的数量。幸运的是,有一个适用于这种情况的公式。要计算round 面容的男士穿着yellow 夹克,您可以在D1 = 黄色和E1 = 圆形时使用:

=SUMPRODUCT(((B2:B17=D1)*(C2:C17=E1))/COUNTIFS(A2:A17,A2:A17&"",B2:B17,B2:B17&"",C2:C17,C2:C17&""))

当我将问题进一步推进时,我就会遇到麻烦。我想计算在yellow 夹克或red 夹克或blue 夹克中的round-faced 或oblong-faced 男士的不同名字的数量。在这种情况下,答案是4。这是我最初在我的情况下写的。对于此示例,D1 = 黄色,D2 = 红色,D3 = 蓝色。 E1 = 圆形,E2 = 长方形。

这给了我一个#N/A 错误。然而,当我取出第三个变量 D3 时,方程看起来像下面的那个它给了我一个准确的数字:

=SUMPRODUCT(((B2:B17={D1,D2})*(C2:C17=E1,E2}))/COUNTIFS(A2:A17,A2:A17&"",B2:B17,B2:B17&"",C2:C17,C2:C17&""))

不幸的是,当我在不同的场景中再做几次时,它开始给我提供不准确的数字。

当每个条件可能有多个变量时,如何使用多个条件计算重复项中的唯一值?

【问题讨论】:

    标签: excel excel-2010


    【解决方案1】:

    对于处理唯一值的计数,倒数 SUMPRODUCT/COUNTIF(S) 构造不仅难以构建超出一些标准,而且 - 可能令人惊讶的是 - 与替代 FREQUENCY/MATCH 相比,效率低得令人难以置信设置,尤其是在大型数据集上。

    使用 CSE**

    =SUM(IF(FREQUENCY(IF(ISNUMBER(MATCH(B2:B17,D1:D3,0)),IF(ISNUMBER(MATCH(C2:C17,E1:E2,0)),MATCH(A2:A17,A2:A17,0))),ROW(A2:A17)-MIN(ROW(A2:A17))+1),1))

    我说令人惊讶,因为自然的假设可能是 FREQUENCYMATCH 使用精确的 match_type 参数的组合会非常低效。事实上,事实恰恰相反。

    问候

    **数组公式的输入方式与“标准”公式不同。不是只按 ENTER,而是先按住 CTRL 和 SHIFT,然后再按 ENTER。如果操作正确,您会注意到 Excel 在公式周围放置了大括号 {}(尽管不要尝试自己手动插入)。

    【讨论】:

    • 感谢@XOR LX 的帮助。我在我的问题中使用的示例与我拥有的数据相似但不完全相同,因此我仍然遇到问题。这是我正在使用的确切数据的一个小样本。我没有足够的空间将其全部放在此评论中,因此请参阅下面的评论。在这种情况下,我想知道从以下地区获得续订或升级的唯一客户的数量:usd、cad、mex。数据本身是从数据库中导出的,我试图让事情变得简单,所以我想在公式中使用变量(例如美元、续订)。
    • 好的,我无法正确格式化此文件以便阅读。希望我的描述就足够了。我正在对客户 ID 进行唯一计数(例如 2342、3423)。这将是 A 列。我正在尝试针对不同的情况计算它们,例如更新和升级。这将是 B 列。将其进一步细分为国家类型。这将是 C 列。这是我希望 Excel 告诉我的内容。给我一个唯一客户 ID 的计数,这些客户 ID 要么是续订,要么是升级,并且来自 usd、cad 或 mex。数据来自数据库,因此我需要按名称引用变量。
    • 所以只需相应地调整我的公式。如果您的值不在连续的单元格中,那么您可以在公式中将它们作为静态数组输入,例如{"usd","cad",max"} 在 ISNUMBER(MATCH 结构中,根据我的解决方案。
    【解决方案2】:

    您可能需要考虑使用数据透视表:

    B20中的公式为:

    =COUNT(F3:G5)  
    

    【讨论】:

    • 感谢您的回复。在更大的图景中,我需要获取几张公式的结果并将其计算到摘要页面。在这种情况下,数据透视表不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多