![Сопоставление диапазонов в Excel](https://rvso.com/image/1481869/%D0%A1%D0%BE%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B4%D0%B8%D0%B0%D0%BF%D0%B0%D0%B7%D0%BE%D0%BD%D0%BE%D0%B2%20%D0%B2%20Excel.png)
У меня есть столбец данных в Excel с числами [0..100]. Мне нужен новый столбец, который сопоставляет их с новым набором значений, таким образом:
- > 90 : 4
- 80-90 : 3
- 70-79 : 2
- 60-69 : 1
- < 60 : 0
Я попытался сделать это сВПР, в частности, с тестовым вводом 77
и вызовом функции VLOOKUP(77, A10:B19, 2, TRUE)
, где A10 — верхний левый элемент в этом диапазоне:
99 4 90 4 89 3 80 3 79 2 70 2 69 2 60 1 59 0 0 0
Однако я получаю результат #N/A
. Согласно документации, это происходит потому, что
...значение в lookup_value меньше наименьшего значения в первом столбце table_array...
Однако это явно не так, поскольку я передаю 77. Однако если я использую тестовые входные данные 79
, значение, которое явно присутствует в таблице поиска, я получаю правильный результат.
Является ли VLOOKUP здесь неправильным подходом? Каков наилучший способ сделать такое отображение?
Я должен отметить, что и мое входное значение, и таблица поиска имеют тип Number.
решение1
Если вы используете Index/Match вместо VLOOKUP, вы можете сохранить таблицу поиска отсортированной по убыванию, как указано в вашем вопросе. Формула:
=INDEX(B1:B10,MATCH(77,A1:A10,-1))
Сопоставление с -1 в качестве третьего параметра вернет значение, большее или равное искомому значению, если таблица отсортирована по убыванию.
решение2
После долгого копания в этом я узнал, что таблица поиска должна быть отсортирована по возрастанию. В документации указано, что она должна быть отсортирована, но не указан порядок сортировки. Все, что не по возрастанию, приводит к ошибке #N/A
.