索引匹配有 4 列

索引匹配有 4 列

我有一张包含两张表的 Excel 文件,一张表包含我的产品、价格、代码等。另一张表用于与竞争对手进行交叉匹配。我附加了 Excel 文件和图像以使我的问题尽可能简单明了。

我希望能够在手动输入任何竞争对手的代码时自动生成我的代码。我能够进行索引匹配,但我只能与一列进行匹配,如下所示(我假设它们都在一张表中以使其更容易:=INDEX(C:C,MATCH(K2,E:E,0))

因此,这仅在 E:E 中查找,当尝试输入不同的列(例如 C:C 或 D:D 等)时,它总是返回错误。

尝试以 C:G 进行匹配但立即出现错误!

有人可以帮忙吗?不胜感激。 示例图像

答案1

此公式从下面屏幕截图中的 B8 向下填充,找到与任何竞争对手代码相对应的“我的代码”:

=INDEX(B$2:B$5,SUMPRODUCT((C$2:G$5=A8)*ROW(C$2:G$5))-1)

在此处输入图片描述

怎么运行的:表达式(C$2:G$5=A8)是一个数组,True其中竞争对手代码的数组等于 A8 中的代码,False其他地方也是如此。ROW(C$2:G$5)是所有竞争对手代码行号的数组。将这两个数组相乘得到一个数组,其中 A8 中代码的行号位于第一个数组所在的位置True,其他地方为 0。

SUMPRODUCT()对该数组求和,仅给出行号。这用作row_num公式中的(减去 1 以计算标题行)INDEX()以返回匹配的“我的代码”。

我希望这个帮助能祝你好运。

答案2

我认为这个问题的答案取决于您想如何使用代码表。

假设表格的第一行(第 2 行)完全为空,然后您在 C2 中输入“代码 52”。然后您希望 B1 显示“我的代码 2”。但是,如果您在 E2 中输入不同的代码,会发生什么情况?您希望单元格 B1 如何变化?

如果竞争对手代码列(C 到 G)中只有一个在每一行中具有值,则可以使用一堆嵌套的 IF 语句来执行此操作:

对于 B2:=IF(C2<>"", INDEX(...), IF(D2<>"", INDEX(...), ... ))

为了给出更好的答案,我们需要更多地了解您的问题。

相关内容