Выберите значение ячейки из диапазона на основе критериев

Я пытаюсь найти более изящный метод определения значения ячейки на основе критериев, определенных в заданном диапазоне. Грубо говоря, у меня есть колонка для стандартной вязкости, стандартной температуры и измеренной температуры. Мне нужно создать четвертый столбец, который будет выбирать стандартную вязкость на основе измеренной температуры. Например, если измеренная температура больше или равна 0oC и меньше 1oC: вернуть стандартную вязкость для 0oC. .

Моя проблема в том, что у меня большой диапазон, и мне кажется утомительным создавать собственное выражение для каждого диапазона. Я создал кошмарную функцию, состоящую из операторов IF(AND()), но считаю это утомительным, особенно если я пытаюсь создать выражение для шкалы 0–200oC с шагом в одну цифру. .

Вот пример кода, который работает, но довольно громоздок:

=IF(AND(G8>=$C$7,G8<$C$8),$D$7,0)+IF(AND(G8>=$C$8,G8<$C$9),$D$8,0)+....

or

=IF(AND(measured temp>=0,measured temp<1),$D$7,0)+IF(AND(measured temp>=1,measured temp<2),$D$8,0)

Как я мог подойти к этому более изящно?


person NAC    schedule 09.07.2014    source источник
comment
Отсортирована ли колонка Стандартная температура? В порядке возрастания?   -  person Jerry    schedule 09.07.2014
comment
Да, столбец отсортирован по возрастанию. 0,1,2,5,9...   -  person NAC    schedule 09.07.2014


Ответы (2)


Вы можете добиться этого с помощью функции ВПР.

=VLOOKUP(G8;$C$7:$D$...;2;TRUE)

Замените три точки индексом последней строки вашей таблицы.

Первый аргумент функции ВПР — это искомое значение; второй аргумент — это диапазон, в первом столбце которого нужно искать значение; третий аргумент - это индекс столбца, содержащего возвращаемые значения (в пределах диапазона, поэтому 2 означает второй столбец в диапазоне, который в вашем случае равен D); TRUE означает, что вы не хотите искать точное совпадение, но что столбец для поиска представляет собой упорядоченный список значений, определяющих интервалы.

Редактировать:

С ПОИСКПОЗОМ и СМЕЩЕНИЕМ (угадал, не попробовал), если столбец со значениями результата слева относительно столбца значений критерия:

=OFFSET($C$7;...;MATCH(G8;$C$7:$C$...;1) - 1)

Замените первые три точки положением столбца результатов относительно столбца C (то есть 1, если это столбец D, и -1, если это столбец B), а вторые три точки - индексом последней строки вашего диапазона, как указано выше.

Редактировать2:

ИНДЕКС вместо СМЕЩЕНИЯ еще лучше, ответ se pnuts и комментарий ниже:

=INDEX($D7:$D...;MATCH(G8;$C$7:$C$...;1))
person JohnB    schedule 09.07.2014
comment
Я тоже это пробовал. Возможно неправильное его применение? Это работает только в том случае, если данные для сравнения находятся в левом столбце. Моя проблема в том, что данные для извлечения могут быть справа или слева с другими столбцами между ними. - person NAC; 09.07.2014
comment
Было бы очень любезно упомянуть об этом в вопросе. Вероятно, вы можете добиться того, чего хотите, с помощью MATCH вместе с INDIRECT и/или OFFSET. - person JohnB; 09.07.2014
comment
Потрясающий! Это сработало отлично! У меня не было индекса должным образом в первый раз! Спасибо! - person NAC; 09.07.2014
comment
@NAC Я бы предпочел формулу орехов. И OFFSET, и INDIRECT являются изменчивыми функциями и будут пересчитываться каждый раз, когда что-то изменяется в вашей книге, даже если это не связано с вашими данными (может быть очень громоздким и замедлять работу вашего компьютера). INDEX, с другой стороны, будет переоценивать только при изменении ваших данных. - person Jerry; 09.07.2014
comment
Да, вероятно, INDEX — лучший выбор. - person JohnB; 09.07.2014

Если ваша измеренная температура, скажем, в F2, а ваша таблица данных A: C, попробуйте:

=INDEX(A:A,MATCH(F2,C:C))  
person pnuts    schedule 09.07.2014