我有两张工作表,其中一张有两列值,如下所示:
Num1 Num2 Result
0.01 0.99
0.01 0.98
0.01 0.95
0.01 0.95
0.01 0.94
0.01 0.93
0.01 0.91
0.01 0.91
0.01 0.91
0.01 0.91
0.01 0.9
0.01 0.89
0.01 0.87
0.01 0.84
... ...
其中一个有两列和一个要查找的值,如下所示:
Num1 Num2 Country
0.01 0.99 Norway
0.01 0.80 Slovenia
0.01 0.41 Ukraine
0.02 0.65 Belarus
0.03 0.79 Slovakia
0.04 0.90 Iceland
0.04 0.72 Kazakhstan
0.05 0.88 Finland
... ... ...
我想要的结果是用国家/地区(来自工作表 2)填充工作表 1 中的 C 列,该国家/地区的 Num1 和 Num2 值与 A 列和 B 列中的值最接近。仅通过目测数据,我就可以看到精确的配对匹配将会很少见,因此它需要“模糊”。
这是我目前得到的关于 C 列的公式:
=INDEX(Lookup!$C$2:$C$123,MATCH(TRUE,INDEX(ABS(Lookup!$B$2:$B$123-Sheet1!B2)=MIN(INDEX(ABS(Lookup!$B$2:$B$123-Sheet1!B2),,)),,),0))
显然这不是我想要的,因为它不以 Num1 列匹配为条件,而我认为它需要匹配。但我的想法是,我可以有条件地对 Num1 执行此操作,然后在另一列中对 Num2 再次执行此操作,然后使用 Vlookups 做一些巧妙的事情来找出 Num1 和 Num2 对之间的差异。然后我可以使用这些差异来选择最能反映“最接近”值的条件匹配。
我觉得还有更好的方法来完成最后一点,但我甚至无法完成第一步。谢谢!
答案1
假设结果表和源表分别在和Sheet1!A1:C15
(Sheet2!A1:C9
标题均在第 1 行),在中Sheet1!C2
,数组公式**:
=INDEX(Sheet2!C$2:C$9,MATCH(MIN(IF(ABS(Sheet2!A$2:A$9-A2)=MIN(ABS(Sheet2!A$2:A$9-A2)),ABS(Sheet2!B$2:B$9-B2))),IF(ABS(Sheet2!A$2:A$9-A2)=MIN(ABS(Sheet2!A$2:A$9-A2)),ABS(Sheet2!B$2:B$9-B2)),0))
按要求抄下来。
问候
**数组公式的输入方式与“标准”公式不同。您不必直接按 ENTER,而是先按住 CTRL 和 SHIFT,然后按 ENTER。如果您操作正确,您会注意到 Excel 在公式周围放置了花括号 {}(但不要尝试自己手动插入这些括号)。