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-----(香蕉)-
等等。 - - - - - - - - -
括号中的值是公式计算这些值的地方。
根据我自己的研究以及与 @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)
这只是提示用户删除这些重复数据。