2016-07-14 4 views
0

У меня есть список вещей по дороге, и я ищу формулу, которая может сказать мне, где ближайший. СущественExcel - поиск ближайшего значения в том же списке

Road Location (m) Nearest 
0001 0080   0230 
0001 0230   0356 
0001 0356   0400 
0001 0400   0356 
0002 0010   0034 
0002 0034   0010 

«ближний» является то, что я пытаюсь достичь, то есть для любой вещи, что значение места для ближайшей вещи, на одной и ту же дорогу.

Индекс/совпадение, которое я нашел, приближается, но не имеет условия, что они находятся на одной дороге, и это не исключает текущую строку. (Use of INDEX MATCH to find absolute closest value)

Я использую Excel 2010.

ответ

0

Если А1: С1 являются заголовки, а затем в С2:

=INDEX(B:B,MAX(IF(SMALL(IF($A$2:$A$100=A2,ABS($B$2:$B$100-B2)),2)=IF($A$2:$A$100=A2,ABS($B$2:$B$100-B2)),ROW($A$2:$A$100)))) 

Это формула массива и должна быть подтверждена с Ctrl + смещение + ввод.

Будет также ошибка с #NUM, если «дорога» имеет только одну запись. В этом случае оберните его в =IFERROR(...,""). Вдалеке от этого, он должен делать именно то, что вы ищете.

EDIT

игнорировать двойники (так что никогда не будет 0), вы можете сделать это с COUNTIFS, как это:

=INDEX(B:B,MAX(IF(SMALL(IF($A$2:$A$100=A2,ABS($B$2:$B$100-B2)),COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,B2)+1)=IF($A$2:$A$100=A2,ABS($B$2:$B$100-B2)),ROW($A$2:$A$100)))) 

Это формула массива и должна быть подтверждено ctrl + Смещение + введите.

Таким образом, мы просто изменить k из SMALL от 2 к COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,B2)+1.

Если у вас остались вопросы, просто спросите;)

+0

Спасибо. Мне удалось подобрать «= IF (A2 = A1, IF (A2 = A3, ABS (MIN (B3-B2, B2-B1)), ABS (B2-B1)), IF (A2 = A3, ABS (B3-B2),)) ', однако моя зависимость от дорожных идентификаторов в порядке. –

+0

Хотя - есть ли способ заставить его игнорировать дубликаты? То есть если есть две вещи в одном и том же месте, она игнорирует ту, что находится в том же месте, и возвращает местоположение к ближайшей вещи не в том же месте? Возможно, вложенная IFNULL? –

+0

@PeterTomlinson добавил редактирование, чтобы полностью игнорировать двойники;) –

Смежные вопросы