0 | A | B | C | D | E | F | G | H | 我 | J | K | L | M | N |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 产品 | 商店 | 2023-S | 2023-M | 2024-S | 2024-M | ||||||||
2 | ||||||||||||||
3 | 产品A | 店铺3 | 80 | 2% | 500 | 22% | ColCrit1 | ColCrit2 | 查找数组 | |||||
4 | 产品B | 店铺2 | 320 | 23% | 180 | 60% | 产品D | 店铺1 | 2024-s | |||||
5 | 产品B | 店铺1 | 90 | 8% | 300 | 36% | 产品G | 店铺3 | 返回数组 | |||||
6 | 产品C | 店铺3 | 500 | 15% | 657 | 16% | 产品 | |||||||
7 | 产品D | 店铺1 | 160 | 17% | 500 | 15% | ||||||||
8 | 产品D | 店铺1 | 500 | 30% | 600 | 8% | 列表 | 比赛 | ||||||
9 | 产品D | 店铺1 | 130 | 4% | 300 | 4% | 830 | 产品G | ||||||
10 | 产品E | 店铺2 | 75 | 10% | 450 | 10% | 600 | 产品D | ||||||
11 | 产品F | 店铺4 | 60 | 8% | 370 | 4% | 600 | 产品G | ||||||
12 | 产品F | 店铺1 | 500 | 11% | 850 | 4% | 500 | 产品D | ||||||
13 | 产品G | 店铺3 | 350 | 8% | 150 | 15% | 300 | 产品D | ||||||
14 | 产品G | 店铺3 | 60 | 47% | 600 | 7% | 300 | 产品G | ||||||
15 | 产品G | 店铺3 | 90 | 25% | 830 | 35% | 300 | 产品G | ||||||
16 | 产品G | 店铺2 | 390 | 9% | 325 | 13% | 150 | 产品G | ||||||
17 | 产品G | 店铺3 | 170 | 30% | 300 | 9% | ||||||||
18 | 产品G | 店铺3 | 320 | 5% | 300 | 12% | ||||||||
19 | 产品H | 店铺2 | 935 | 27% | 230 | 16% | ||||||||
20 | 产品一 | 店铺3 | 134 | 18% | 600 | 42% |
在
Range K9:K16
中,列出了 Column H
中满足 Range K4:K6
和 Range L4:L6
中列条件的所有值。 Range L9:L16
中,我想根据在 return_array
中输入的变量 Cell N6
添加列值。
参考这个问题我已经能够开发出这个公式:
=IFERROR(LET(
a; K9:K17;
b; A1:I1;
c; A3:I20;
d; XLOOKUP(N4;b;c;"");
MAP(a;LAMBDA(α; @DROP(TOCOL(FILTER(IFS(d=α;IF(c=0;x;c));N6=b);3);
COUNTIF(K9:α;α)-1))));"")
这个解决方案几乎完美运行。
但是,现在的问题是
Cell H3
和Cell H5
中的值。这些值与 Range K9:K16
中的某些值相等。 Range L9:L16
中的列表是不正确的。 为了解决这个问题,我认为
Range K4:K6
和 Range L4:L6
中的列标准必须以某种方式添加到上面的公式中。
你知道该怎么做吗?
您可以使用
COUNTIFS
过滤掉查找数组并返回数组:
=LET(
included, COUNTIFS(K4:K5, A3:A20, L4:L5, C3:C20),
lookup_array, FILTER(XLOOKUP(N4, A1:I1, A3:I20, ""), included, ""),
return_array, FILTER(XLOOKUP(N6, A1:I1, A3:I20, ""), included, ""),
selected, K9:K16,
MAP(
selected,
LAMBDA(x,
LET(
filtered, FILTER(return_array, lookup_array = x, ""),
current_count, COUNTIF(K9:x, x),
INDEX(filtered, current_count, 1)
)
)
)
)