найти индекс ближайшего номера + совпадение + мин + абс с несколькими критериями совпадения - PullRequest
0 голосов
/ 15 марта 2020

Как мне найти ближайший номер? Соответствует двум критериям (имя и дата).

=INDEX(G6:G18,MATCH(1,MIN((K3=E6:E18)*(L3=F6:F18),ABS(G6:G18-M3)),ABS(G6:G18-M3),0))

Данные Excel для ближайшего номера:

enter image description here

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Я скомбинирую условия вместе, ближайшее значение будет иметь 1 / (разница) наибольшее, в это время агрегат будет работать, затем просто найдем свой индекс по используя совпадение, вот формула:

=INDEX(M3:M8,MATCH(AGGREGATE(14,6,1/((K3:K8=O2)*(L3:L8=P2)*(ABS(Q2-M3:M8)+1)),1),1/((K3:K8=O2)*(L3:L8=P2)*(ABS(Q2-M3:M8)+1)),0))

enter image description here

Обновление: Спасибо @Ron Rosenfeld за отзыв! Предыдущая формула не работала, когда разница = 0.

Надеюсь, что это работает!

0 голосов
/ 15 марта 2020

Вы не указываете, что вы хотите, если число равноудалено от обоих чисел в таблице. В зависимости от порядка эти формулы могут возвращать одну или другую.

Обратите внимание, что я преобразовал ваши данные в таблицу и использую структурированные ссылки. Но эти формулы будут одинаково хорошо работать с обычной адресацией.

Если у вас последняя версия Excel с функцией FILTER:

=INDEX(INDEX(FILTER(Table1,(K3=Table1[Name])*(L3=Table1[date])),0,3),MATCH(MIN(ABS(M3-INDEX(FILTER(Table1,(K3=Table1[Name])*(L3=Table1[date])),0,3))),ABS(M3-INDEX(FILTER(Table1,(K3=Table1[Name])*(L3=Table1[date])),0,3)),0))

Если у вас нет FILTER попробуйте:

=INDEX(AGGREGATE(15,6,1/((K3=Table1[Name])*(L3=Table1[date]))*Table1[number],ROW(INDIRECT("1:"&COUNT(1/((K3=Table1[Name])*(L3=Table1[date])))))),MATCH(MIN(ABS(M3-AGGREGATE(15,6,1/((K3=Table1[Name])*(L3=Table1[date]))*Table1[number],ROW(INDIRECT("1:"&COUNT(1/((K3=Table1[Name])*(L3=Table1[date])))))))),ABS(M3-AGGREGATE(15,6,1/((K3=Table1[Name])*(L3=Table1[date]))*Table1[number],ROW(INDIRECT("1:"&COUNT(1/((K3=Table1[Name])*(L3=Table1[date]))))))),0))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...