241*_*git 2 excel excel-formula
我有一个如下表:
我想统计每个商店购买了多少张单品?有多少人购买了 2 件及全套商品?结果应该如下所示
在商店“m3”中,账单 300 购买了 2 件商品 C,但在最终结果中仅计为 1。这就是我遇到的问题,因为我尝试
COUNTIFS(A:A, "=m1", B:B, "=A")(然后添加 B 和 C 的计数)获取商店 m1 的单个商品,但无法弄清楚如何区分唯一的账单号码。
请不要介意询问是否需要更多说明,而且我确实更喜欢 Excel 内置函数而不是 VBA。
使用 Office 365 公式,我们从基本公式开始查找单身人士:
=BYROW(E2:E4,
LAMBDA(z,SUM(--(
BYROW(--(COUNTIFS(A:A,z,C:C,UNIQUE($C$2:$C$8),B:B,{"A","B","C"})>0),
LAMBDA(a,SUM(a)))=1))))
Run Code Online (Sandbox Code Playgroud)
这将为您提供单一结果:
其他都是该公式的变体:
甲、乙
=BYROW(E2:E4,
LAMBDA(z,SUM(--(
BYROW(--(COUNTIFS(A:A,z,C:C,UNIQUE($C$2:$C$8),B:B,{"A","B"})>0),
LAMBDA(a,SUM(a)))=2))))-J2#
Run Code Online (Sandbox Code Playgroud)
公元前
=BYROW(E2:E4,
LAMBDA(z,SUM(--(
BYROW(--(COUNTIFS(A:A,z,C:C,UNIQUE($C$2:$C$8),B:B,{"C","B"})>0),
LAMBDA(a,SUM(a)))=2))))-J2#
Run Code Online (Sandbox Code Playgroud)
甲、丙
=BYROW(E2:E4,
LAMBDA(z,SUM(--(
BYROW(--(COUNTIFS(A:A,z,C:C,UNIQUE($C$2:$C$8),B:B,{"C","A"})>0),
LAMBDA(a,SUM(a)))=2))))-J2#
Run Code Online (Sandbox Code Playgroud)
全部
=BYROW(E2:E4,
LAMBDA(z,SUM(--(
BYROW(--(COUNTIFS(A:A,z,C:C,UNIQUE($C$2:$C$8),B:B,{"A","B","C"})>0),
LAMBDA(a,SUM(a)))=3))))
Run Code Online (Sandbox Code Playgroud)
我们必须将 添加-J2#到双打的末尾,以便在拥有全部三个时将其删除。它在两个地方都会计算在内。
使用旧版本的 Excel,我们需要使用 SUMPRODUCT、MMULT、INDEX、MODE.MULT 等进行一些练习
=SUMPRODUCT(
--(MMULT(
--(COUNTIFS(A:A,E2,C:C,INDEX(C:C,N(IF({1},MODE.MULT(IF(MATCH($C$2:$C$8,C:C,0)=ROW($C$2:$C$8),ROW($C$2:$C$8)*{1,1}))))),B:B,{"A","B","C"})>0),
{1;1;1})=1))
Run Code Online (Sandbox Code Playgroud)
=SUMPRODUCT(
--(MMULT(
--(COUNTIFS(A:A,E2,C:C,INDEX(C:C,N(IF({1},MODE.MULT(IF(MATCH($C$2:$C$8,C:C,0)=ROW($C$2:$C$8),ROW($C$2:$C$8)*{1,1}))))),B:B,{"A","B"})>0),
{1;1})=2))-J2
Run Code Online (Sandbox Code Playgroud)
=SUMPRODUCT(
--(MMULT(
--(COUNTIFS(A:A,E2,C:C,INDEX(C:C,N(IF({1},MODE.MULT(IF(MATCH($C$2:$C$8,C:C,0)=ROW($C$2:$C$8),ROW($C$2:$C$8)*{1,1}))))),B:B,{"B","C"})>0),
{1;1})=2))-J2
Run Code Online (Sandbox Code Playgroud)
=SUMPRODUCT(
--(MMULT(
--(COUNTIFS(A:A,E2,C:C,INDEX(C:C,N(IF({1},MODE.MULT(IF(MATCH($C$2:$C$8,C:C,0)=ROW($C$2:$C$8),ROW($C$2:$C$8)*{1,1}))))),B:B,{"A","C"})>0),
{1;1})=2))-J2
Run Code Online (Sandbox Code Playgroud)
=SUMPRODUCT(
--(MMULT(
--(COUNTIFS(A:A,E2,C:C,INDEX(C:C,N(IF({1},MODE.MULT(IF(MATCH($C$2:$C$8,C:C,0)=ROW($C$2:$C$8),ROW($C$2:$C$8)*{1,1}))))),B:B,{"A","B","C"})>0),
{1;1;1})=3))
Run Code Online (Sandbox Code Playgroud)
其中每一个都将放置在各自列的第一行中,并在退出编辑模式时使用 Ctrl-Shift-Enter 而不是 Enter 来确认为数组公式。
他们将被拖拽/复制到列中。