如何在 IF 语句中组合 VLOOKUP,其中 VLOOKUP 函数的列索引是从文本中推断出来的数字?

MrM*_*rho 4 worksheet-function vlookup microsoft-excel

我在 Excel 中有以下表格:

产品库存

股票分析.

产品库存表(PST)比这更广泛,但出于这个问题的目的,我已将其删减。

我想在 Stock Analysis 表(SAT)的列中查找与 Product Stock 表的 Size 列中的值匹配的值。

例如,在本例中,我的产品库存表(PST)的大小列中的值为8,因此我想查找我的库存分析表的大小 8列中的值。如果我的值为5,则在我的股票分析表(SAT) 中查找大小 5

请注意,已执行数据验证以确保我的 Product Stock 表的 Size 列中的值基于指定的维度,因此只有一系列大小也是 Stock Analysis 表的列

还插入了公式以确保SAT的下一行将始终具有比前一行大一个的批号(即每新行的批号列增加 1)这是为了确保SAT中没有重复批次

到目前为止我所拥有的是:

=IF(PST[Batch No]=SAT[Batch No, VLOOKUP(PST[Batch No], PST, Stuck here, FALSE), "")
Run Code Online (Sandbox Code Playgroud)

我需要的col_index_num是将PST 的Size 列中的值与SAT标头中字符串的最后一个字符进行匹配,不包括 Batch No 标头(尽管这可能不会影响它)。当有匹配时,给出表上的列号。

这将给出与批号匹配的列下的值。

我希望这是可以理解的。

我非常不想深入研究 VBA

g.k*_*kov 10

像这样的东西?

在此处输入图片说明

中的公式H12为:

=VLOOKUP(E12,$C$6:$H$8,MATCH("Size "&F12,$C$5:$H$5,0),FALSE)
Run Code Online (Sandbox Code Playgroud)

编辑:公式如何H12工作。

提供列号的部分,

MATCH("Size "&F12,$C$5:$H$5,0)
Run Code Online (Sandbox Code Playgroud)

首先将前缀"Size "F12(=8)的值连接起来,产生一个 string "Size 8"。然后遍历标题行中的单元格$C$5:$H$5 以找到该关键字符串并返回匹配单元格的编号,即6(标题中的最后一个单元格)。那么公式

=VLOOKUP(E12,$C$6:$H$8,MATCH("Size "&F12,$C$5:$H$5,0),FALSE)
Run Code Online (Sandbox Code Playgroud)

本质上变成

=VLOOKUP(E12,$C$6:$H$8,6,FALSE)
Run Code Online (Sandbox Code Playgroud)

E12在 range 的第一列中查找(=1)的内容$C$6:$H$8。换句话说,它选择行,其对应于Batch No=1,这是1。并给定 range 中的行 (=1) 和列 (=6) 编号$C$6:$H$8VLOOKUP返回存储在 中的值H6,即7

  • @MrMarho:嗯,总是有错误的地方,所以如何处理它们取决于你。 (2认同)