У меня есть два набора данных в 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, это означает, что это один и тот же объект, и я хочу записать его Old ID
в столбец B.
=IF(SQRT((C2-$F$2)^2+(D2-$G$2)^2)<1,$E$2,0)
Приведенная выше формула работает для одного объекта за раз, когда я щелкаю и перетаскиваю, пока не появится идентификатор; однако мне приходится много копировать и вставлять, чтобы продолжать использовать этот метод. Проблема в том, что у меня есть около 260 новых объектов для поиска около 180 старых объектов. Ручное нажатие и перетаскивание слишком трудоемко.
Я не смог придумать способ использовать функцию ВПР или ИНДЕКС, чтобы сообщить Excel: «Для этих значений X и Y в ячейках F2 и G2 проверьте значения в C2 и D2. Если d равно ‹ 1, напечатайте E2. . Если нет, проверьте F3 и G3 и печатайте E3, если это правда, et cetera et cetera, пока не найдете совпадение».
Есть ли у кого-нибудь какие-либо советы о том, как заставить это работать?
Я знаю, что если бы координаты были точно одинаковыми для объекта в старых и новых данных, я мог бы просто использовать комбинацию ПОИСКПОЗ ИНДЕКС, но, к сожалению, они немного отличаются.