XLOOKUP 具有灵活的 return_array 和 Lookup_array 列

问题描述 投票:0回答:1
0 A B C D E F G H J K L M
1 产品 商店 2023-S 2023-M 2024-S 2024-M
2 查找数组
3 产品A 店铺3 80 2% 120 22% 2024-S
4 产品B 店铺1 320 17% 400 15% 返回数组
5 产品B 店铺3 90 30% 750 8% 所选数据 2024-M
6 产品B 店铺2 500 4% 70 4% 400 15%
7 产品C 店铺2 160 10% 245 10% 400 35%
8 产品D 店铺1 500 8% 130 4% 70 4%
9 产品D 店铺4 130 11% 130 4% 520 42%
10 产品E 店铺2 75 8% 650 15% 130 4%
11 产品E 店铺1 60 47% 90 7% 90 7%
12 产品E 店铺4 500 25% 400 35% 130 4%
13 产品E 店铺3 350 9% 140 13% 130 9%
14 产品F 店铺2 60 30% 130 9% 70 16%
15 产品G 店铺2 90 5% 370 12%
16 产品H 店铺1 390 27% 70 16%
17 产品H 店铺2 70 18% 520 42%

Range M6:M14
中我想根据
Range K6:14
中的值获取相应的数据。
但是,我希望拥有灵活性

  1. lookup_array
    根据
    Cell M3

  2. 中的输入使用
  3. return_array
    根据
    Cell M5
    中的输入使用。例如,如果我从
    2024-M
    切换到
    Product
    ,则应列出
    Column A
    中的相应产品。

参考这个问题中的答案,我正在寻找这样的东西:

=LET(
     _A, K6:K14,
     _B, >> flexible based on input in Cell M3 <<,
     _RollingA, MAP(_A,LAMBDA(α,COUNTIF(α:K6,α))),
     _RollingB, MAP(_B,LAMBDA(α,COUNTIF(α:H3,α))),
     XLOOKUP(_A&"|"&_RollingA,_B&"|"&_RollingB,XLOOKUP(M5,A1:I1,A3:I17)))

注意:

lookup_array
中的值不是唯一的。在此示例中,
130
400
70
。因此,如果
Range K6:14
中的值的频率与
return_array
中的值的频率不匹配,则在
Range M6:M14
中,它们应按降序与
Range K6:14
中的值匹配。 (上面的示例公式已经这样处理了)。


我需要什么公式才能使

Range M6:M14
中的结果基于灵活的
lookup_array
return_array
发挥作用?

excel excel-formula
1个回答
0
投票

解决方案已经在JvdV先生发布的答案中,

enter image description here


• 单元格中使用的公式 M6

=LET(
     _A, K6:K14,
     _B, XLOOKUP(M3,A1:I1,A3:I17,""),
     MAP(_A,LAMBDA(α, @DROP(TOCOL(FILTER(IFS(_B=α,A3:I17),M5=A1:I1),3),COUNTIF(K6:α,α)-1))))

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