【问题标题】:Sumproduct - counting equal pairs of numbers (and filtering them)Sumproduct - 计算相等的数字对(并过滤它们)
【发布时间】:2020-04-27 04:40:46
【问题描述】:

在 D&E 列中,我有一个游戏得分列表,其中 D 是得分,E 是反对得分,就像这样

D    E
1    3
4    2
3    3
3    1

我正在尝试创建一个公式,根据 D 列是否大于、等于或小于 E 列来显示赢/平/输记录。在此示例中,它将显示 2 / 1 / 1

到目前为止我有这个

=(SUMPRODUCT(--(D12:D200>E12:E200)))&" / "&SUMPRODUCT(--(D12:D200=E12:E200))&" / "&(SUMPRODUCT(--(D12:D200<E12:E200)))

但是有两个问题。一种是所有空白行都被计算为相等,因此结果为2 / 186 / 1

第二个是在另一列中,我有一个星期几的列表,我希望能够按天过滤掉行并让结果反映这一点。我有不同的公式使用 SUBTOTAL 而不是 SUM 来计算总点数,效果很好。但我不知道我需要对我的公式进行什么等效更改。任何帮助将不胜感激。

【问题讨论】:

    标签: excel filtering sumproduct


    【解决方案1】:

    至于您的第一个问题,您的公式确实考虑了空格并将它们视为平等。您可以调整中间的SUMPRODUCT 公式以省略空格,就像这样:

    =SUMPRODUCT(ISNUMBER(D12:D200)*(--(D12:D200=E12:E200)))
    

    第二个问题是关于按星期几过滤行。这是应用“日”过滤器之前的视图 - 如您所见,我们有 5 胜(蓝色)、4 平(橙色)和 3 负(绿色)。

    您需要使用以下公式使SUMPRODUCT 动态化(即它会对过滤掉行做出反应):

    =SUMPRODUCT(SUBTOTAL(3,OFFSET(F12:F200,ROW(F12:F200)-ROW(F12),,1)),--(D12:D200>E12:E200))&" / "&SUMPRODUCT(SUBTOTAL(3,OFFSET(F12:F200,ROW(F12:F200)-ROW(F12),,1)),ISNUMBER(D12:D200)*(--(D12:D200=E12:E200)))&" / "&SUMPRODUCT(SUBTOTAL(3,OFFSET(F12:F200,ROW(F12:F200)-ROW(F12),,1)),--(D12:D200<E12:E200))
    

    这是星期一的结果:

    【讨论】:

    • 感谢您的详细解答!两者都工作得很好 - 唯一的问题是我希望能够通过过滤掉列来过滤日子,而不是每天都有不同的公式。你知道这是否可以实现吗?
    • 很高兴它对你有用!不确定您所说的“过滤掉列”是什么意思 - 您是否可以附上屏幕截图以及预期的结果?
    • 对不起,我的意思是过滤掉行,而不是列。 Like so
    • 啊,我想我明白你的意思了。如果您希望 SUBTOTAL 公式忽略隐藏行(即受过滤影响的行),您可以使用 =SUBTOTAL(109,range)。描述如下:“function_num 为 101-111 的 Excel SUBTOTAL 函数忽略隐藏行中的值,但不会忽略隐藏列中的值。”
    • 对不起,我没有很好地解释自己,我不认为。我的意思是,我知道SUBTOTAL 存在用于对过滤出的数据的行求和,但我想知道是否有办法修改我最初的SUMPRODUCT 公式,也许在那里使用SUBTOTAL 命令或其他东西,所以我发布的公式也不包括过滤掉的行。
    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多