在Excel中索引并匹配多个条件

在Excel中索引并匹配多个条件,excel,indexing,match,criteria,Excel,Indexing,Match,Criteria,我有两个列相同的数据表。第一个由实验数据填充: `Treatment Species TimeofDay Temp Light X M B AM 25 25 2 M B PM 26 50 3 M B PM 27 150 4 M C AM

我有两个列相同的数据表。第一个由实验数据填充:

`Treatment  Species TimeofDay   Temp    Light   X
     M        B       AM         25      25     2
     M        B       PM         26      50     3
     M        B       PM         27      150    4
     M        C       AM         25      25     5
     M        C       AM         26      150    6
     M        C       PM         27      500    7
     M        C       PM         28      800    9
     A        B       AM         25       25    2
     A        B       PM         26       50    3
     A        B       PM         27       150   4
     A        C       AM         25       25    5
     A        C       AM         26      150    6
     A        C       PM         27      500    7
     A        C       PM         28      800    9
在第二个表中,我想用第一个表中的值填充“X”列,以便在给定的行中,A)所有分类值都与表1中的值完全匹配,B)温度和光照值与表1中的匹配值最接近(但不精确)

例如,如果在表2中,我有:

Treatment  Species  TimeofDay  Temp  Light  X
    M         B        PM       30    200
我希望函数在X列中给我4。 我熟悉为一列中给定匹配项的值编制索引,以及在一列中查找最接近的匹配值,但我很难将所有这些条件放在一起:

=INDEX(Table1!F$2:F$20,
MATCH(Table2!A$2,Table1!A$2:A$20,0))
MATCH(Table2!B$2,Table1!B$2:B$20,0))
MATCH(Table2!C$2,Table1!C$2:C$20,0))
MATCH(MIN(ABS(Table1!D$2:D$20-Table2!D$2)),ABS(Table1!D$2:D$20-Table2!D$2), 0))
MATCH(MIN(ABS(Table1!E$2:E$20-Table2!E$2)),ABS(Table1!E$2:E$20-Table2!E$2),0))

提前感谢您的帮助。

此公式有效,请输入F2:

=INDEX(Table1!F:F,MATCH(MIN(IF(A2=Table1!A:A,IF(B2 = Table1!B:B,IF(C2 = Table1!C:C,ABS((Table1!D:D+Table1!E:E)-(D2+E2)))))),IF(A2=Table1!A:A,IF(B2 = Table1!B:B,IF(C2 = Table1!C:C,ABS((Table1!D:D+Table1!E:E)-(D2+E2))))),0))
这是一个数组公式,必须在退出编辑模式时使用Ctrl-Shift-Enter确认。然后抄下来


至于你的其他评论,如果差异相同,优先顺序将是第一位

为多个条件组合这些条件时,您希望返回什么索引?F列范围,还是D列范围?如果你想返回F范围,我想你可以使用这个(以数组形式输入,使用CTRL+SHIFT+Enter):
=INDEX(表1!F$1:F20,MATCH(表2!D$1&MIN(ABS(表1!D$1:D$20-Table2!D$1)),表1!D$1:D$20&ABS(表1!D$1:D$20-Table2!D$1),0))
。您能提供一些模型数据吗?这样我们就不需要尝试重新创建可能与您的表相似或不相似的表了?下面是一个(希望如此)简单的示例,说明如何匹配多个条件。假设我在B列中有名字,在C列中有姓氏,并想在A列中返回ID。我想在
F1
中匹配名字,在
G1
中匹配姓氏,然后返回ID。我想在
G3
中使用它:
=索引(A:A,匹配(F1&G1,B:B&C:C,0))
,用CTRL+SHIFT+ENTER输入。您只需将“条件”与
&
连接起来,并对其范围执行相同的操作。谢谢@BruceWayne,我想我正在接近。这就是我现在得到的答案,但似乎不是正确的答案。我在结尾使用了1而不是0,因为数字匹配不精确=指数(表1!F$2:F$6247,匹配(表2!A$2和表2!B$2和表2!C$2和表2!D$2和表2!E$2,表1!A$2:A$6247和表1!B$2:B$6247和表1!C$2:C$6247和(最小值(ABS(表1!D$2:D$6247-表2!D$2))和(最小值)(ABS(表1!E$2:E$2和表2!E$2)))谢谢@ScottCraner。我用表格和问题的简化示例编辑了问题。太棒了!据我所知,到目前为止,它也在处理我的超级复杂的电子表格。再次感谢您的努力。