Эта формула должна работать:
=IF(LOOKUPVAL>MAX(COLUMN1),FIRSTVAL,INDEX(COLUMN2,IF(ABS(LOOKUPVAL-INDEX(COLUMN1,MATCH(LOOKUPVAL,COLUMN1,-1)))<ABS(LOOKUPVAL-INDEX(COLUMN1,MATCH(LOOKUPVAL,COLUMN1,-1)+1)),MATCH(LOOKUPVAL,COLUMN1,-1),MATCH(LOOKUPVAL,COLUMN1,-1)+1)))
, где COLUMN1
и COLUMN2
- это диапазоны, соответствующие вашей справочной таблице (с символами € и пробелами, отредактированными для получения простых чисел), FIRSTVAL
- первое значение в столбце 2, а LOOKUPVAL
- диапазон значения, которое вы хотите найти.
КАК ЭТО РАБОТАЕТ
A . Вы можете найти индекс наименьшего значения в столбце 1, который больше LOOKUPVAL
с:
=MATCH(LOOKUPVAL,COLUMN1,-1)
Поскольку ваши значения отсортированы в порядке убывания, мы используем -1
третий параметр. Для удобства назовем это INDEX1 .
B . Поскольку ваши значения в порядке убывания, следующее значение в столбце 1 будет меньше, чем LOOKUPVAL
. Мы можем получить его индекс с помощью:
=INDEX1+1
Мы назовем это INDEX2 .
C . Мы можем посмотреть значения, связанные с этими двумя индексами:
=INDEX(COLUMN1,INDEX1)
=INDEX(COLUMN1,INDEX2)
Мы назовем их VALUE1 и VALUE2 соответственно.
D . Мы получаем расстояния LOOKUPVAL
от каждого из VALUE1 и VALUE2 по
=ABS(LOOKUPVAL-VALUE1)
=ABS(LOOKUPVAL-VALUE2)
Мы назовем эти DISTANCE1 и DISTANCE2 соответственно.
E . Мы получаем желаемый индекс в зависимости от того, какие из DISTANCE1 и DISTANCE2 меньше:
=IF(DISTANCE1<DISTANCE2,INDEX1,INDEX2)
Мы назовем это DESIREDINDEX .
F . Наконец, мы ищем нужное значение столбца 2:
=INDEX(COLUMN2,DESIREDINDEX)
G . Чтобы получить длинную, громоздкую формулу в верхней части этого ответа, вы начинаете с нижней части и заменяете обратно .
H . В качестве последнего шага нам нужно защитить функцию MATCH
от ошибок, когда она пытается найти число, которое больше, чем что-либо в столбце 1. Для этого мы оборачиваем все это в IF
:
=IF(LOOKUPVAL>MAX(COLUMN1),FIRSTVAL,Proceed as described above)
Надеюсь, что поможет