Excel:尝试按各种标准求和但忽略重复值

问题描述 投票:0回答:2

我有一个大型数据集,我想根据各种标准对值进行求和。唯一的问题是其中一些值会重复,因此 SUMIFS 函数会对这些值进行双倍、三倍等计数。是否有一个公式可以让我“告诉”我的 SUMIFS 函数只对每个值计数一次?

我已经包含了一个虚构的数据基本示例以及我正在尝试做的事情,希望这是有意义的。我只想对 HU 小于或大于 400 的每个值求和。我已经展示了手册、正确的结果,以及使用 SUMIFS 时会发生什么。

enter image description here

谢谢!

excel excel-formula sumifs
2个回答
0
投票

好的差不多了,但是最后一步有问题,如果你可以访问 Office 365,请使用这个

LET
功能:

=LET(_Data,J1:L16,  
_UniData,UNIQUE(_Data),
_Row1,CHOOSECOLS(_UniData,1),
_Row2,CHOOSECOLS(_UniData,2),
_Row3,CHOOSECOLS(_UniData,3),
_Argument1,"HU",
_Argument2,"<"&400,
_Calc,SUMIFS(_Row3,_Row2,_Argument1,_Rows3,Argument2)

我的时间不多了,但 SUMIFS 仍然给出

#VALUE
错误,我不确定为什么,但希望有人可以解决这个问题(或者我明天会调查它)。


0
投票

这是获得所需输出的一种方法:

• 如果所有类别都需要带有标签,并且如果不包含

Column J
作为条件,则以下将返回包含所有
HU
总计的表格数据,如屏幕截图所示:


• 单元格中使用的公式 N1

=LET(
     _Data, J1:L16,
     _ReqD, DROP(_Data,,1),
     _Vals, TAKE(_ReqD,,-1),
     _HU, TAKE(_ReqD,,1),
     _Less, SUM(UNIQUE(FILTER(_Vals,(_HU="HU")*(_Vals<400)))),
     _Greater, SUM(UNIQUE(FILTER(_Vals,(_HU="HU")*(_Vals>400)))),
     HSTACK("Total HU "&{"<400";">400";""}, VSTACK(_Less,_Greater,_Less+_Greater)))

• 如果包含

Column J
作为标准,则使用以下内容:

=LET(
     _Data, J1:L16,
     _Vals, TAKE(_Data,,-1),
     _HU, INDEX(_Data,,2),
     _Less, SUM(DROP(UNIQUE(FILTER(_Data,(_HU="HU")*(_Vals<400))),,2)),
     _Greater, SUM(DROP(UNIQUE(FILTER(_Data,(_HU="HU")*(_Vals>400))),,2)),
     HSTACK("Total HU "&{"<400";">400";""},
     VSTACK(_Less,_Greater,_Less+_Greater)))

更短的方法如下:

• 当

<400

=SUM(DROP(UNIQUE(FILTER(J1:L16,(K1:K16="HU")*(L1:L16<400))),,2))

• 当

>400

=SUM(DROP(UNIQUE(FILTER(J1:L16,(K1:K16="HU")*(L1:L16>400))),,2))

另一个,我只是想让它更短,无论如何,这是一种使用

ETA LAMBDA

的方法
=LET(
     _Data, J1:L16,
     _Vals, TAKE(_Data,,-1),
     _HU, INDEX(_Data,,2),
     _Less, FILTER(_Data,(_HU="HU")*(_Vals<400)),
     _Greater, FILTER(_Data,(_HU="HU")*(_Vals>400)),
     _Sum, TOCOL(BYCOL(IFNA(CHOOSECOLS(UNIQUE(HSTACK(_Less,_Greater)),3,6),0),SUM)),
     HSTACK("Total HU "&{"<400";">400";""},VSTACK(_Sum,SUM(_Sum))))

© www.soinside.com 2019 - 2024. All rights reserved.