EXCEL索引匹配多个条件和多个匹配类型?

时间:2016-10-17 14:54:12

标签: excel vba

所以我确信我的语法错误,但情况就是这样......

我的Sheet2有3列:point_name,x,y我有Sheet3,列有5列的区域:area_name,x_start,x_end,y_start,y_end

我试图将每个X和Y坐标与它的相应区域相关联。我知道索引匹配将允许多个条件,但它似乎不允许多种匹配类型....

=INDEX(Sheet3!A2:A64,MATCH(Sheet2!B2&Sheet2!C2&Sheet2!B2&Sheet2!C2,Sheet3!$C$2:$C$65&Sheet3!$E$2:$E$65&Sheet3!$B$2:$B$65&Sheet3!$D$2:$D$65,-1&-1&1&1))

我遇到的问题(或者我认为我遇到的问题)是,虽然匹配将允许多个条件,但它不允许多个匹配类型IE -1&amp; 1大于&amp;小于。< / p>

也许我只是以错误的方式解决这个问题,所以简要回顾一下

我有一个区域列表以及sheet3中每个区域的相应边界

我想

返回Sheet3 area_name

sheet2 x大于sheet3 x_end和

sheet2 x小于sheet3 x_start和

sheet2 y大于s​​heet3 y_end和

sheet2 y小于sheet3 y_start

实际上&lt; =&gt; =会更好,但我不想让它复杂化,直到得到我正在寻找的结果。

我是否用索引匹配功能咆哮错误的树?有没有更好的方法来做到我错过了?

我不反对在sheet2中使用带有foreach行的宏,如果这是更好的方法。

感谢您的时间。

修改

示例数据:

Sheet2
point_name  __x_  __y_
point1      1060  6090
point2      1200  6080
point3      1232  5750

Sheet3
area_name  y_start   y_end  x_start  x_end
Area1         6106    6080     1149   1055
Area2         6106    6080     1315   1163
Area3       6227.5  6115.5     1115   1095
Area4         5860    5730     1239   1229

1 个答案:

答案 0 :(得分:0)

使用您提供的样本数据,结果将是“Area1”,“Area2”和“Area4”。使用此公式可以获得这些结果:

=INDEX(Sheet3!$A$2:$A$5,MATCH(1,INDEX((Sheet3!$D$2:$D$5>=B2)*(Sheet3!$E$2:$E$5<=B2)*(Sheet3!$B$2:$B$5>=C2)*(Sheet3!$C$2:$C$5<=C2),),0))