Excel INDEX MATCH 检查多列

Ric*_*lan 6 array vlookup microsoft-excel

我基本上要解决的问题是一个 VLOOKUP,它正在检查 A:E 列的值,如果在其中任何一个中找到它,则返回 F 列中保存的值。

由于 VLOOKUP 无法完成任务,我研究了 INDEX-MATCH 语法,但我正在努力弄清楚如何为一组值而不是单列完成此操作。我在下面构建了一个示例数据集来尝试解释这一点:

A------B------C------D------E------F

1------2------3------4------5------Apple

12-----13--------------------------Banana

14---------------------------------Carrot
Run Code Online (Sandbox Code Playgroud)

如果被检查的单元格包含 1、2、3、4 或 5,则公式的结果应该是 Apple。如果是 12 或 13,它应该返回 Banana,最后如果它包含 14,它应该返回 Carrot。

后半部分来自这样一个事实,即被引用的单元格不是单个值,而是一个完整的表格本身。因此,根据不同的值,将多次完成此搜索。

因此,为了演示,在其他地方(如下所示)还有另一个表,其中包含这些值。我试图让系统识别哪一行,以及与每列关联的“Apple、Banana、Carrot”值中的哪一个。表格如下所示

你好 - - - - - -

1------(苹果)----

2------(苹果)----

12-----(香蕉)-

等等。 - - - - - - - - -

括号中的值是公式计算这些值的地方。

Ric*_*lan 2

根据我自己的研究以及与 @Gary'sStudent 的讨论,我使用的解决方案是为每个可能包含该值的列创建一个 MATCH 公式,以及一个空白捕获“IFERROR”语句。

I1 =IFERROR(MATCH($H1,A$1:A$3,0),"")     
J1 =IFERROR(MATCH($H1,B$1:B$3,0),"")     
K1 =IFERROR(MATCH($H1,C$1:C$3,0),"")    
L1 =IFERROR(MATCH($H1,D$1:D$3,0),"")    
M1 =IFERROR(MATCH($H1,E$1:E$3,0),"")
etc.
Run Code Online (Sandbox Code Playgroud)

现在可以隐藏这些列以防止用户混淆/交互。

然后,我创建了一个索引,将这些值累积到一个值中,该值应该与相关的 ROW 相匹配。同样,如果在表中找不到该值,则会进行检查(第一个 SUM),将其输入为空白值。

N1 =IF(SUM(I1:M1)=0,"",INDEX($A$1:$F$3,SUM(I1:M1),6))
Run Code Online (Sandbox Code Playgroud)

索引匹配数组 最后,我输入了一些条件格式公式,以确保用户识别并替换/删除任何重复的数据。

A1:E3 Cell contains a blank value                [Formatting None Set, Stop if True]
A1:E3 =COUNTIF($A$1:$E$3,A1)>1                   [Formatting Text:White, Background:Red]

H1:N1 =COUNTIF($A$1:$E$3,H1)>1       [Formatting Text:Red, Background:Red]
Run Code Online (Sandbox Code Playgroud)

这只是提示用户删除这些重复数据。

在此输入图像描述