indexing - 应用 IF 而不是 MATCH 时如何使用 INDEX?

标签 indexing match coordinates libreoffice-calc

我在 LibreOffice Calc 中有两个数据集,其中包含平面中对象的笛卡尔坐标。一种是具有 X 个对象的旧数据,另一种是具有相同 X 个对象 + N 个新对象的较新数据。

Excel 电子表格:

      A          B          C          D     ||    E       F        G
      |          |          |          |     ||    |       |        |
1 - New ID  Previous ID  X Value    Y Value  || Old ID  X Value  Y Value
2 -  1a          ?        89.09      73.79   ||   1a     52.60    94.15 
3 -  1b          ?        52.50      94.05   ||   1b     81.20    28.49
4 -  1c          ?        36.72      94.85   ||   2a     91.04    38.93
5 -  2a          ?        81.14      28.38   ||   3a     68.65    84.64
6 -  2b          ?        07.50      46.69   ||   3b     64.50    37.18
7 -  3a          ?        90.72      39.00   ||   4a     18.36    03.65

对于每个旧对象的坐标(F 和 G 列),我想遍历所有新对象的坐标(C 和 D 列),看看两者之间的距离 d 是否很远小(对我来说,小于 1 的值就足够了)。

d = SQRT( (X2-X1)^2 + (Y2-Y1)^2 )

如果 d < 1 那么这意味着它们是同一个对象,我想在 B 列中记录它的旧 ID

=IF(SQRT((C2-$F$2)^2+(D2-$G$2)^2)<1,$E$2,0)

当我单击并拖动直到出现一个 ID 时,上述公式一次适用于一个对象;但是,我必须复制和粘贴很多东西才能继续使用这种方法。问题是我有大约 260 个新对象要搜索大约 180 个旧对象。手动点击和拖动太费力了。

我还没有想出一种方法来使用 VLOOKUP 或 INDEX 告诉 Excel“对于单元格 F2 和 G2 中的这些 X 和 Y 值,去检查 C2 和 D2 中的值。如果 d < 1然后打印 E2。如果不是,请检查 F3 和 G3,如果是,则打印 E3 等等等等,直到找到匹配项。”

有人对如何让它发挥作用有任何建议吗?

我知道如果旧数据和新数据中的对象的坐标完全相同,那么我可以只使用 INDEX MATCH 组合,但不幸的是它们确实略有不同。

最佳答案

在单元格 B2 中向下复制,您将需要这两个公式之一。我对您要找的东西有点模糊,但我相信其中一个适合:

=IFERROR(INDEX($E$2:$E$7,MATCH(TRUE,INDEX(SQRT((C2-$F$2:$F$7)^2+(D2-$G$2:$G$7)^2)<1,),0)),"No Match")

或者:

=IFERROR(INDEX($E$2:$E$7,MATCH(TRUE,INDEX(SQRT(($C$2:$C$7-F2)^2+($D$2:$D$7-G2)^2)<1,),0)),"No match")

关于indexing - 应用 IF 而不是 MATCH 时如何使用 INDEX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28199077/

相关文章:

database - 带有 ORDER BY 的 Documentdb SDK 导致 ServiceUnavailableException

mongodb - mongodb聚合是否使用稀疏索引

elasticsearch - Elasticsearch:合并术语查询和匹配查询

python - 将坐标列表排序为 strip

ios - 如何从 Objective-C 中的文本文件解析坐标?

python - Pandas:用特定索引匹配减去两个系列

mysql - MySql 表中的重复索引

validation - F# 使用匹配来验证参数

rust - 模式匹配 float 的替代方案是什么?

android - org.json.JSONException : Value 10. 07526 at 0 of type java.lang.Double cannot be converted to JSONObject