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%
4 产品B 店铺1 320 17% 400 15% 来自列的数据
5 产品B 店铺3 470 30% 750 8% 2024-S 已选择 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
中的值获取相应的数据。
但是,我希望能够灵活地根据
Range M6:M14
中输入的列标题选择
Cell M5
中的值。


在表中,选择列

2024-M

例如,如果我将
Cell M5
更改为列标题
Products
,则
Range M6:M14
应如下所示:

Product B
Product E
Product B
Product H
Product D
Product E
Product D
Product F
Product H

总结一下,我正在寻找这样的东西:

Range M6:14 =XLOOKUP(K6:K14,$H$1:$H$17,Based on input in Cell $M$5,NA(),0)

注意:

  1. lookup_array
    永远是一样的。在这个例子中
    Range $H$1:$H$17

  2. lookup_array
    中的值不是唯一的。在此示例中为
    130
    400
    70

  3. 如果
    lookup_array
    中的值不是唯一的,则它将始终以与示例中的
    Range M6:M14
    130
    400
    完全相同的频率出现在
    70
    中。
  4. 这个问题的解决方案在这里不起作用,因为
    Range M6:M14
    中的结果不应仅与值
    Column A
    相对应。它可以是表格中基于
    Cell M5
    中输入的列标题的任何列。

我需要什么公式才能使

Range M6:M14
中的结果基于
Cell M5
中选定的列标题工作?

excel excel-formula
1个回答
0
投票

我将使用辅助列来完成它,并逐步使用公式:

首先在单元格

N5
中输入数字0。

在单元格

N6
中,写入以下公式:
=XMATCH(K6,DROP($H$3:$H$17,O6,0),0,1)

在单元格

O6
中,写入以下公式:
=SUM(--($K$5:K5=K6)*($N$5:N5))

将N列和O列的公式都往下拉,你会得到这个:

enter image description here

O 列的作用如下:

例如单元格 O7 = 2,意味着 H3:H17 中的第 2 行的值 = 400,因此为了在 H3:H17 中找到“下一个”400,我们需要在执行之前删除 H3:H17 中的前两行X比赛。

N7 号电池 = 8;意味着 H5:H17 中的第 8 行的值 = 400。 (我们删除前两行,因此查找数组是 H5:H17 而不是 H3:H17)。

最后,我们在P列中得到最终结果。

单元格中的公式

P6

=INDEX(DROP($I$3:$I$17,O6,0),N6,1)

您可以将其向下拖动。

如果要显示A列的值,只需将公式更改为以下:(将I3:I17替换为A3:A17)

=INDEX(DROP($A$3:$A$17,O6,0),N6,1)

enter image description here

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