【问题标题】:Conditional sum across multiple columns跨多列的条件求和
【发布时间】:2019-12-11 15:40:19
【问题描述】:

假设我有 A、B、C、E 列,并且仅当 E 中的值不为空并且与 A 或 B 或 C 中的值匹配时,我想对 E 中的数字(行范围)求和对应的行。例如,在下面的示例中,A4=E4 且 B7=E7,因此我们将 E4 + E7 相加。

我知道如何解决这个问题的唯一方法是使用两个单独的操作;一个条件 if 函数,它将匹配值输出到另一列,然后是一个求和函数来对整列求和。如果可能的话,我想通过一次操作来解决这个问题。

【问题讨论】:

    标签: regex filter google-sheets sum google-sheets-formula


    【解决方案1】:
    =SUM(FILTER(E1:E9, 
     REGEXMATCH(""&E1:E9, ""&A1:A9*1)+
     REGEXMATCH(""&E1:E9, ""&B1:B9*1)+
     REGEXMATCH(""&E1:E9, ""&C1:C9*1)))
    


    =ARRAYFORMULA(SUMPRODUCT(IFERROR(IFERROR(
     REGEXEXTRACT(" "&TRIM(TRANSPOSE(QUERY(TRANSPOSE(A1:C9),,999^99)))&" ", " "&E1:E9&" "), 
     REGEXEXTRACT(" "&TRIM(TRANSPOSE(QUERY(TRANSPOSE(A1:C9),,999^99)))&" ", " "&F1:F9&" ")))))
    

    【讨论】:

    • 如果我想进一步扩展用例以获得另一列 F,其中 E 或 F(但不是两者)中的值可能与 AC 匹配,我们应该对匹配的单元格求和从 E 和 F?我尝试了以下方法:=SUM(FILTER(E1:E9, REGEXMATCH(""&E1:E9, ""&A1:A9*1)+ REGEXMATCH(""&E1:E9, ""&B1:B9*1)+ REGEXMATCH(""&E1:E9, ""&C1:C9*1)))+ SUM(FILTER(F1:F9, REGEXMATCH(""&F1:F9, ""&A1:A9*1)+ REGEXMATCH(""&F1:F9, ""&B1:B9*1)+ REGEXMATCH(""&F1:F9, ""&C1:C9*1))) 但这似乎总结了 F 中的所有内容,无论它是否匹配。
    • =SUM(FILTER(E1:E9, REGEXMATCH(""&E1:E9, ""&A1:A9*1)+ REGEXMATCH(""&E1:E9, ""&B1:B9*1)+ REGEXMATCH(""&E1:E9, ""&C1:C9*1)), FILTER(F1:F9, REGEXMATCH(""&F1:F9, ""&A1:A9*1)+ REGEXMATCH(""&F1:F9, ""&B1:B9*1)+ REGEXMATCH(""&F1:F9, ""&C1:C9*1))) - i.stack.imgur.com/7TDPu.png
    • 上述公式在以下情况下似乎表现不佳。以您提供的最新示例为例,但更改 E4=10(使其与 A4、B4、C4 中的任何一个都不匹配),总和为 13。此外,如果我将 E4 更改为小于 10 的任何值,则总和为 #N/A .有什么想法吗?
    • 最后一个问题,如果我想添加对 scale=1 的十进制值的支持?谢谢!
    • 试试:=ARRAYFORMULA(SUMPRODUCT(IFERROR(1*IFERROR( REGEXEXTRACT(" "&TRIM(TRANSPOSE(QUERY(TRANSPOSE(A1:C9),,999^99)))&" ", " "&TO_TEXT(E1:E9)&" "), REGEXEXTRACT(" "&TRIM(TRANSPOSE(QUERY(TRANSPOSE(A1:C9),,999^99)))&" ", " "&TO_TEXT(F1:F9)&" "))))) - i.stack.imgur.com/V9gbD.png
    猜你喜欢
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 2017-12-15
    相关资源
    最近更新 更多