Excel:如何对“过滤器”功能的结果求和/汇总

Excel: How to Sum/Aggregate results of "Filter" Function

提问人:Elmar 提问时间:11/16/2023 最后编辑:Mayukh BhattacharyaElmar 更新时间:11/18/2023 访问量:114

问:

我有一张桌子。

enter image description here

当我使用公式时:

=FILTER(A1:C7,B1:B7="red",) 

我得到的是:

enter image description here

然而,我想得到的是:

enter image description here

有什么想法该怎么做吗?

注意:使用该功能是必须的。Filter

excel-公式

评论

0赞 Solar Mike 11/16/2023
我会查看 A 列的 unique(),然后是“红色”。
0赞 Terry W 11/16/2023
为什么不使用数据透视表?

答:

4赞 Mayukh Bhattacharya 11/16/2023 #1

请尝试使用以下公式:

enter image description here


• 细胞中使用的配方E2

=LET(
     α, FILTER(A2:C7,B2:B7="red"),
     φ, INDEX(α,,1)&"|"&INDEX(α,,2),
     UNIQUE(HSTACK(TEXTBEFORE(φ,"|"),TEXTAFTER(φ,"|"),
     MMULT(N(φ=TOROW(φ)),DROP(α,,2)))))

或者,使用适用于PIVOTBY()Beta Users

enter image description here


• 细胞中使用的配方E2

=LET(
     α, FILTER(A2:C7,B2:B7="red"),
     PIVOTBY(TAKE(α,,2),,TAKE(α,,-1),SUM,,0))

或使用GROUPBY()

enter image description here


=LET(α, FILTER(A2:C7,INDEX(A2:C7,,2)="red"), GROUPBY(TAKE(α,,2),TAKE(α,,-1),SUM,,0))

或者,使用PIVOTBY()

enter image description here


=PIVOTBY(A2:B7,,C2:C7,SUM,,0,,,,B2:B7="red")

替代版本意识到它将比早期版本更高效和更好。MMULT()

enter image description here


=UNIQUE(FILTER(HSTACK(A2:B7,MMULT((A2:A7=TOROW(A2:A7))*(B2:B7="red"),C2:C7)),B2:B7="red"))

评论

0赞 Elmar 11/16/2023
我不是测试版用户。所以或我不可用。但第一个选项对我有用。谢谢!我希望或尽快发布正式版本。GROUPBY()PIVOTBY()GROUPBY()PIVOTBY()
0赞 Mayukh Bhattacharya 11/16/2023
应该可以工作,我也刚刚发布了作为替代方案,我发现这些功能目前存在一些问题,应该像在测试中一样使用。作为知识目的共享。是的,据我所知,通常所有新功能都是分批发布的!不仅如此,在工作场所不允许启用,通常除非有特别补助金!MMULT()BetaBeta
2赞 P.b 11/16/2023 #2

对于那些有权访问 Excel Beta 版的用户:

=LET(f,FILTER(A2:C7,B2:B7="red"),PIVOTBY(TAKE(f,,2),,DROP(f,,2),SUM,,0))

=LET(f,FILTER(A2:C7,B2:B7="red"),GROUPBY(TAKE(f,,2),DROP(f,,2),SUM,,0))=LET(g,GROUPBY(A2:B7,C2:C7,SUM,,0),FILTER(g,INDEX(g,,2)="red"))

enter image description here

2赞 Keyub W 11/16/2023 #3

类似于 Mayukh Bhattacharya 的回答,但没有文本处理。

=LET(
    valid_range, FILTER(A2:C7, B2:B7="red"),
    values, MMULT(TRANSPOSE(INDEX(valid_range,,1) = TRANSPOSE(UNIQUE(INDEX(valid_range,,1))))*1, 
INDEX(valid_range,,3)),
    HSTACK(UNIQUE(DROP(valid_range,,-1)), values))
2赞 JvdV 11/16/2023 #4

如果适用,请使用 GROUPBY():

enter image description here

公式:E2

=GROUPBY(A2:B7,C2:C7,SUM,,0,,B2:B7="red")

你说使用是必须的,但是我们现在使用了内部的 groupby-filter,这对我来说似乎很好。FILTER()


或者,“老式”:

=UNIQUE(FILTER(HSTACK(A2:B7,SUMIFS(C2:C7,A2:A7,A2:A7,B2:B7,"red")),B2:B7="red"))

评论

0赞 Elmar 11/17/2023
GROUPBY()是仅供 BETA 用户使用的功能。许多人仍然无法访问 BETA 版(尤其是如果它是企业 Excel)。
0赞 JvdV 11/17/2023
@Elmar,当然,但是您有很多选择。无论如何;我还使用老式的 .SUMIFS()