【问题标题】:EXCEL index match by multiple criteria AND multiple match types?EXCEL索引匹配多个条件和多个匹配类型?
【发布时间】:2016-10-18 00:03:09
【问题描述】:

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

我有带有 3 列的 Sheet2:point_name、x、y 我有带有 5 列区域列表的 Sheet3: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))

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

也许我只是用错误的方式来做一个简短的回顾

我在 sheet3 中有一个区域列表和每个区域的边界

我想要

返回 Sheet3 area_name where

sheet2 x 大于 sheet3 x_end 和

sheet2 x 小于 sheet3 x_start 和

sheet2 y 大于 sheet3 y_end 和

sheet2 y 小于 sheet3 y_start

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

我是不是用索引匹配功能找错了树?有没有我想念的更好的方法?

我不反对在 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

【问题讨论】:

  • 您能提供一些示例数据和预期结果吗?我的猜测是您正在寻找类似 @​​987654323@ 的内容,但如果没有样本数据和预期结果,我无法验证。
  • Sheet2 点名| 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

标签: excel vba


【解决方案1】:

使用您提供的样本数据,结果将是“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))

【讨论】:

  • 太棒了,这看起来就是我想要做的......我猜星号 (*) 表示 AND 而不是乘法?先生,感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 2019-10-22
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 2019-12-28
  • 2019-04-04
相关资源
最近更新 更多