将值匹配并列出到包含多列条件的列表

问题描述 投票:0回答:1
750b
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
中的列标准必须以某种方式添加到上面的公式中。

你知道该怎么做吗?

excel excel-formula
1个回答
0
投票

您可以使用

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)
            )
        )
    )
)

enter image description here

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