Формула Excel: Двустороннее приблизительное соответствие нескольким критериям -

Содержание

Резюме

Чтобы выполнить двусторонний поиск приближенного соответствия с несколькими критериями, вы можете использовать формулу массива на основе ИНДЕКС и ПОИСКПОЗ с помощью функции ЕСЛИ для применения критериев. В показанном примере формула в K8:

=INDEX(data,MATCH(K6,IF(material=K5,hardness),1),MATCH(K7,diameter,1))

где данные (D6: H16), диаметр (D5: H5), материал (B6: B16) и твердость (C6: C16) - это названные диапазоны, используемые только для удобства.

Примечание: это формула массива, которую необходимо вводить с помощью Control + Shift + Enter.

Объяснение

Цель состоит в том, чтобы найти скорость подачи на основе материала, твердости и диаметра сверла. Значения скорости подачи находятся в данных названного диапазона (D6: H16).

Это можно сделать с помощью двухсторонней формулы ИНДЕКС и ПОИСКПОЗ. Одна функция ПОИСКПОЗ вычисляет номер строки (материал и твердость), а другая функция ПОИСКПОЗ находит номер столбца (диаметр). Функция ИНДЕКС возвращает окончательный результат.

В показанном примере формула в K8:

=INDEX(data, MATCH(K6,IF(material=K5,hardness),1), // get row MATCH(K7,diameter,1)) // get column

(Разрывы строк добавлены только для удобства чтения).

Сложность заключается в том, что материал и твердость нужно обрабатывать вместе. Нам нужно ограничить ПОИСКПОЗ значениями твердости для данного материала (низкоуглеродистая сталь в показанном примере).

Мы можем сделать это с помощью функции ЕСЛИ. По сути, мы используем IF, чтобы «отбросить» нерелевантные значения, прежде чем искать совпадение.

подробности

Функция ИНДЕКС дается именованный диапазон данных (D6: H16) , как для массива. Первая функция ПОИСКПОЗ вычисляет номер строки:

MATCH(K6,IF(material=K5,hardness),1) // get row num

Чтобы найти правильный ряд, нам нужно точно сопоставить материал и приблизить его твердость. Мы делаем это, используя функцию ЕСЛИ, чтобы сначала отфильтровать нерелевантную жесткость:

IF(material=K5,hardness) // filter

Мы проверяем все значения материала (B6: B16), чтобы убедиться, что они соответствуют значению в K5 («Низкоуглеродистая сталь»). Если это так, значение твердости пропускается. Если нет, IF возвращает FALSE. Результатом является такой массив:

(FALSE;FALSE;FALSE;85;125;175;225;FALSE;FALSE;FALSE;FALSE)

Обратите внимание, что единственные сохранившиеся значения связаны с низкоуглеродистой сталью. Остальные значения теперь ЛОЖЬ. Этот массив возвращается непосредственно в функцию ПОИСКПОЗ как lookup_array.

Значение поиска для совпадения поступает из K6, который содержит заданную твердость, 176. MATCH настроен на приблизительное совпадение, задав для match_type значение 1. С этими настройками ПОИСКПОЗ игнорирует значения FALSE и возвращает положение точного совпадения или следующего наименьшего значения. .

Примечание: значения твердости должны быть отсортированы в порядке возрастания для каждого материала.

Если задана твердость 176, ПОИСКПОЗ возвращает 6, передаваемое непосредственно в ИНДЕКС как номер строки. Теперь мы можем переписать исходную формулу следующим образом:

=INDEX(data,6,MATCH(K7,diameter,1))

Вторая формула MATCH находит правильный номер столбца путем приблизительного сопоставления диаметра:

MATCH(K7,diameter,1) // get column num

Примечание: значения диаметра D5: H5 должны быть отсортированы в порядке возрастания.

Значение поиска поступает из K7 (0,75), а массив lookup_array - это диаметр именованного диапазона (D5: H5).

Как и раньше, MATCH устанавливается на приблизительное совпадение, устанавливая match_type равным 1.

Если диаметр равен 0,75, ПОИСКПОЗ возвращает 3, передаваемое непосредственно в функцию ИНДЕКС в качестве номера столбца. Исходная формула теперь принимает следующий вид:

=INDEX(data,6,3) // returns 0.015

ИНДЕКС возвращает окончательный результат 0,015, значение из F11.

Интересные статьи...