Сопоставление индекса с несколькими критериями должно возвращать ближайшее значение, которое меньше или равно значению поиска.

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

{=INDEX($AO$2:$AO$5000,MATCH(SMALL(IF($AN$2:$AN$5000=A2,ABS($AO$2:$AO$5000-F2)),1),IF($AN$2:$AN$5000=A2,ABS($AO$2:$AO$5000-F2)),0))}

Для справки:

АО - сумма в долларах

АН - это свидание

А это дата

F - сумма в долларах

Мы хотим сопоставить даты в AN с A, а затем найти ближайшую сумму в долларах в AO, которая меньше или равна F. В один и тот же день может быть несколько экземпляров с разными суммами в долларах. нам просто нужен ближайший, не перебирая то, что должно быть возвращено в F. Это не обязательно должна быть формула сопоставления индекса, если вы можете придумать лучший способ сделать это, но я совершенно уверен, что это должна быть формула массива, поскольку она должна учитывать все значения, чтобы принять правильное решение.


person Taylor D    schedule 19.09.2017    source источник
comment
Что еще вы пробовали и что получилось? Где пример ваших данных и желаемого результата? См. Справку SO для Как задать хороший вопрос и Как создать минимальный, полный и проверяемый пример. Упростите нам задачу помочь вам, предоставив что-то, что мы можем скопировать/вставить в рабочий лист; или фактический образец данных, который вы загрузили на сайт обмена файлами.   -  person Ron Rosenfeld    schedule 20.09.2017
comment
Не глядя на ваши данные, трудно помочь. Но если ваши данные отсортированы, вы можете просто использовать VLOOKUP с 1 (или TRUE) в поле Range_lookup (т.е. =VLOOKUP(A2,$AN$2:$AN$5000,3,1)). Если нет, опубликуйте некоторые образцы данных, и мы сможем вам помочь.   -  person ian0411    schedule 20.09.2017


Ответы (1)


=AGGREGATE(14,6,($AO$2:$AO$5000)/(($AN$2:$AN$5000=A2)*(($AO$2:$AO$5000)<=F2)),1)

часть после / будет оцениваться как 0, если одно из них ложно. это вызывает ошибку, которую агрегат будет игнорировать из-за того, что 6. 14 указывает агрегату сортировать результаты от наибольшего к наименьшему. 1 указывает агрегату вернуть первое по величине значение, которое меньше или равно F2.

person Forward Ed    schedule 20.09.2017
comment
Успешно справился! и какой новый подход Я не очень много играл с агрегатной функцией. Будет делать так больше впредь. Спасибо, добрый сэр. - person Taylor D; 22.09.2017