4 способа сделать ВПР чувствительным к регистру в Excel

В этом небольшом уроке объясняется, как создать функцию ВПР (VLOOKUP) с учетом регистра, показывает несколько других формул, по которым Excel может выполнять поиск с учетом регистра, и указывает на сильные и слабые стороны каждой функции.

Думаю, каждый пользователь Excel знает, какая функция выполняет вертикальный поиск. Всё верно, это функция ВПР. Однако мало кто знает, что ВПР не чувствителен к регистру, т.е. символы нижнего и верхнего регистра для него идентичны.

Вот краткий пример, демонстрирующий неспособность ВПР признать регистр. Предположим, в ячейке A1 содержит значение «счет» и ячейку A2 – «Вексель», формула:

=VLOOKUP("Bill",A1:A10,2)

=ВПР("Bill";A1:A10;2)

… прекратит поиск слова «счет», поскольку это значение стоит первым в списке, и извлечет значение из ячейки B1.

Далее в этой статье я покажу вам, как это сделать. ВПР с учетом регистра. Кроме того, мы изучим еще несколько функций, которые могут выполнять поиск с учетом регистра в Excel.

Начнем с самого простого – Перейти к товару (ПРОСМОТР) и SUMPRODUCT (СУММПРОИЗВ), которые, к сожалению, имеют несколько существенных ограничений. Далее мы подробнее рассмотрим немного более сложную формулу ИНДЕКС+ПОИСКПОЗ (ИНДЕКС+ПОИСКПОЗ), который безупречно работает в любой ситуации и с любым набором данных.

Функция ВПР чувствительна к регистру

Как вы уже знаете, обычная функция ВПР нечувствителен к регистру. Однако есть способ сделать его чувствительным к регистру. Для этого в таблицу необходимо добавить вспомогательный столбец, как показано в следующем примере.

Предположим, в столбце B есть идентификаторы продуктов (Товар), и вы хотите извлечь цену продукта и соответствующий комментарий из столбцов C и D. Проблема в том, что идентификаторы содержат символы как нижнего, так и верхнего регистра. Например, значения ячеек B4 (001Tvci3u) и B5 (001Tvci3U) отличаются только последним символом, u и U соответственно.

Как вы понимаете, обычная формула поиска

=VLOOKUP("001Tvci3U",$A$2:$C$7,2,FALSE)

=ВПР("001Tvci3U";$A$2:$C$7;2;ЛОЖЬ)

вернется $ 90, так как значение 001Tvci3u находится в диапазоне поиска раньше, чем 001Tvci3U. Но это не то, что нам нужно, не так ли?

4 способа сделать ВПР чувствительным к регистру в Excel

Для поиска с помощью функции ВПР в Excel с учетом регистра вам придется добавить вспомогательный столбец и заполнить его ячейки следующей формулой (где B — столбец подстановки):

=CODE(MID(B2,1,1)) & CODE(MID(B2,2,1)) & CODE(MID(B2,3,1)) & CODE(MID(B2,4,1)) & CODE(MID(B2,5,1)) & CODE(MID(B2,6,1)) & CODE(MID(B2,7,1)) & CODE(MID(B2,8,1)) & IFERROR(CODE(MID(B2,9,1)),"")

=КОДСИМВ(ПСТР(B2;1;1)) & КОДСИМВ(ПСТР(B2;2;1)) & КОДСИМВ(ПСТР(B2;3;1)) & КОДСИМВ(ПСТР(B2;4;1)) & КОДСИМВ(ПСТР(B2;5;1)) & КОДСИМВ(ПСТР(B2;6;1)) & КОДСИМВ(ПСТР(B2;7;1)) & КОДСИМВ(ПСТР(B2;8;1)) & ЕСЛИОШИБКА(КОДСИМВ(ПСТР(B2;9;1));"")

Эта формула разбивает искомое значение на отдельные символы, заменяет каждый символ его кодом (например, вместо A в 65 вместо этого a код 97), а затем объединяет эти коды в уникальную строку чисел.

После этого мы используем простую функцию ВПР для поиска с учетом регистра:

=VLOOKUP($G$3,$A$2:$C$8,3,FALSE)

=ВПР($G$3;$A$2:$C$8;3;ЛОЖЬ)

4 способа сделать ВПР чувствительным к регистру в Excel

Правильная работа функции ВПР чувствительность к регистру зависит от двух факторов:

  1. Вспомогательный столбец должен быть крайним левым столбцом в видимом диапазоне.
  2. Искомое значение должно содержать код символа вместо реального значения.

Как правильно использовать функцию КОД

Формула, вставленная в ячейки вспомогательного столбца, предполагает, что все ваши искомые значения имеют одинаковое количество символов. Если нет, то вам нужно знать наименьшее и наибольшее числа и добавить как можно больше признаков. IFERROR (ЕСЛИОШИБКА) сколько символов представляет собой разница между самым коротким и самым длинным искомым значением.

Например, если самое короткое значение поиска составляет 3 символа, а самое длинное — 5 символов, используйте следующую формулу:

=CODE(MID(B2,1,1)) & CODE(MID(B2,2,1)) & CODE(MID(B2,3,1)) & IFERROR(CODE(MID(B2,3,1)),"") & IFERROR(CODE(MID(B2,4,1)),"")

=КОДСИМВ(ПСТР(B2;1;1)) & КОДСИМВ(ПСТР(B2;2;1)) & КОДСИМВ(ПСТР(B2;3;1)) & ЕСЛИОШИБКА(КОДСИМВ(ПСТР(B2;3;1));"") & ЕСЛИОШИБКА(КОДСИМВ(ПСТР(B2;4;1));"")

Для функции ПСТР (MID) Вы предоставляете следующие аргументы:

  • 1-й аргумент – текст (текст) — это текст или ссылка на ячейку, содержащую символы, которые необходимо извлечь (в нашем случае это B2)
  • 2-й аргумент – начальный_номер (start_position) — это позиция первого из извлекаемых символов. ты входишь 1 в первой функции ПСТР, 2 – во второй функции ПСТР и так далее
  • 3-й аргумент – число_символов (number_of_characters) – указывает количество символов, которые нужно извлечь из текста. Так как нам все время нужен только 1 символ, во всех функциях пишем 1.

ОГРАНИЧЕНИЯ: Функция ВПР не лучшее решение для поиска с учетом регистра в Excel. Во-первых, требуется добавление вспомогательного столбца. Во-вторых, формула хорошо справляется со своей задачей только в том случае, если данные однородны или известно точное количество символов в искомых значениях. Если это не ваш случай, лучше использовать одно из решений, которые мы покажем ниже.

Функция ПРОСМОТР для поиска с учетом регистра

Функция Перейти к товару (ПРОСМОТР) связанные ВПР, однако его синтаксис позволяет выполнять поиск с учетом регистра без добавления вспомогательного столбца. Для этого используйте Перейти к товару в сочетании с функцией EXACT (ТОЧНЫЙ).

Если взять данные из предыдущего примера (без вспомогательного столбца), то с задачей справится следующая формула:

=LOOKUP(TRUE,EXACT($A$2:$A$7,$F$2),$B$2:$B$7)

=ПРОСМОТР(ИСТИНА;СОВПАД($A$2:$A$7;$F$2);$B$2:$B$7)

Поиск формул в диапазоне A2: A7 точное совпадение со значением ячейки F2 чувствителен к регистру и возвращает значение из столбца B той же строки.

Подобно ВПРфункция Перейти к товару одинаково работает с текстовыми и числовыми значениями, как вы можете видеть на скриншоте ниже:

4 способа сделать ВПР чувствительным к регистру в Excel

Важно! Для того, чтобы функция Перейти к товару сработало правильно, значения в справочной колонке должны быть отсортированы по возрастанию, т.е. от меньшего к большему.

Кратко поясню, как работает эта функция. EXACT в формуле, показанной выше, поскольку это ключевой момент.

Функция EXACT сравнивает два текстовых значения в 1-м и 2-м аргументах и ​​возвращает TRUE, если они абсолютно одинаковы, или FALSE, если это не так. Для нас важно, чтобы функция EXACT деликатный случай.

Давайте посмотрим, как работает наша формула ПРОСМОТР+ТОЧНО:

=LOOKUP(TRUE,EXACT($A$2:$A$7,$F$2),$B$2:$B$7)

=ПРОСМОТР(ИСТИНА;СОВПАД($A$2:$A$7;$F$2);$B$2:$B$7)

  • Функция EXACT сравнивает значение ячейки F2 со всеми элементами в столбце A (А2:А7). Возвращает TRUE, если найдено точное совпадение, в противном случае — FALSE.
  • Поскольку вы даете первый аргумент функции Перейти к товару значение TRUE, оно извлекает соответствующее значение из указанного столбца (в нашем случае столбца B) только в том случае, если найдено точное совпадение, с учетом регистра.

Надеюсь, это объяснение было понятным, и теперь вы поняли основную идею. Если да, то с другими функциями, которые мы разберем далее, у вас не возникнет никаких сложностей, т.к. все они работают по одному и тому же принципу.

ОГРАНИЧЕНИЯ: Данные в столбце поиска должны быть отсортированы по возрастанию.

СУММПРОИЗВ – находит текстовые значения с учетом регистра, но возвращает только числа.

Как вы уже поняли из названия, SUMPRODUCT (СУММПРОИЗВ) — еще одна функция Excel, которая поможет вам выполнять поиск с учетом регистра, но возвращает только числовые значения. Если этот вариант вас не устраивает, то можете сразу приступить к комплектации. ИНДЕКС+ПОИСКПОЗ, что дает решение для любого случая и для любых типов данных.

Во-первых, позвольте мне кратко объяснить синтаксис этой функции, это поможет вам лучше понять следующую формулу с учетом регистра.

Функция SUMPRODUCT умножает элементы данных массивов и возвращает сумму результатов. Синтаксис выглядит следующим образом:

SUMPRODUCT(array1,[array2],[array3],...)

СУММПРОИЗВ(массив1;[массив2];[массив3];…)

Поскольку нам нужен поиск с учетом регистра, мы используем функцию EXACT (ТОЧНО) из предыдущего примера в качестве одного из множителей:

=SUMPRODUCT((EXACT($A$2:$A$7,$F$2)*($B$2:$B$7)))

=СУММПРОИЗВ((СОВПАД($A$2:$A$7;$F$2)*($B$2:$B$7)))

Как вы помните, EXACT сравнивает значение ячейки F2 со всеми элементами в столбце A. Возвращает TRUE, если найдено точное совпадение, в противном случае — FALSE. В математических операциях Excel принимает ИСТИНА как 1, и ЛОЖЬ для 0В дальнейшем SUMPRODUCT умножает эти числа и суммирует результаты.

Нули не учитываются, потому что при умножении они всегда дают 0. Давайте подробнее рассмотрим, что происходит, когда точное совпадение в столбце A нашел и вернул 1… Функция SUMPRODUCT умножает число в столбце B on 1 и возвращает результат – точно такое же число! Это связано с тем, что результаты остальных произведений равны нулю и не влияют на итоговую сумму.

К сожалению, функция SUMPRODUCT не может работать с текстовыми значениями и датами, так как их нельзя умножать. В этом случае вы получите сообщение об ошибке #СТОИМОСТЬ! (#ЗНАЧЕНИЕ!) как в ячейке F4 на картинке ниже:

4 способа сделать ВПР чувствительным к регистру в Excel

ОГРАНИЧЕНИЯ: Возвращает только числовые значения.

ИНДЕКС + ПОИСКПОЗ – поиск с учетом регистра для любого типа данных

Наконец, мы близки к неограниченной формуле поиска с учетом регистра, которая работает с любым набором данных.

Этот пример идет последним не потому, что самое лучшее остается на десерт, а потому, что знания, полученные из предыдущих примеров, помогут вам лучше и быстрее понять формулу с учетом регистра. ИНДЕКС+ПОИСКПОЗ (ИНДЕКС+МАТЧ).

Как вы, наверное, догадались, комбинация функций БОЛЬШЕ ОТКРЫТОГО и ИНДЕКС используется в Excel как более гибкая и мощная альтернатива ВПР. Статья «Использование ИНДЕКС и ПОИСКПОЗ вместо ВПР» прекрасно объяснит, как эти функции работают вместе.

Я просто резюмирую ключевые моменты:

  • Функция БОЛЬШЕ ОТКРЫТОГО (MATCH) ищет значение в заданном диапазоне и возвращает его относительную позицию, то есть номер строки и/или столбца;
  • Далее, функция ИНДЕКС (ИНДЕКС) возвращает значение из указанного столбца и/или строки.

Чтобы сформулировать ИНДЕКС+ПОИСКПОЗ может выполнять поиск с учетом регистра, вам нужно добавить к нему только одну функцию. Нетрудно догадаться, что это снова EXACT (ТОЧНЫЙ):

=INDEX($B$2:$B$7,MATCH(TRUE,EXACT($A$2:$A$7,$F$2),0))

=ИНДЕКС($B$2:$B$7;ПОИСКПОЗ(ИСТИНА;СОВПАД($A$2:$A$7;$F$2);0))

В этой формуле EXACT работает так же, как и в связке с функцией Перейти к товаруи дает тот же результат:

4 способа сделать ВПР чувствительным к регистру в Excel

Обратите внимание, что формула ИНДЕКС+ПОИСКПОЗ в фигурных скобках заключена формула массива, которую необходимо завершить, нажав Shift + Ctrl + Enter.

Почему ИНДЕКС+ПОИСКПОЗ — лучшее решение для поиска с учетом регистра?

Основные преимущества пакета ИНДЕКС и БОЛЬШЕ ОТКРЫТОГО:

  1. Не требует добавления вспомогательного столбца, в отличие от ВПР.
  2. Не требует сортировки столбца поиска, в отличие от Перейти к товару.
  3. Работает со всеми типами данных – числами, текстом и датами.

Эта формула кажется идеальной, не так ли? На самом деле, это не. И вот почему.

Предположим, что ячейка в столбце возвращаемого значения, связанная с искомым значением, пуста. Какой результат вернет формула? Нет? Давайте посмотрим, что на самом деле возвращает формула:

4 способа сделать ВПР чувствительным к регистру в Excel

Упс, формула возвращает ноль! Это не может быть большой проблемой, если вы работаете с чистыми текстовыми значениями. Однако если таблица содержит числа, в том числе «настоящие» нули, это становится проблемой.

Фактически, все остальные формулы поиска (ВПР, ПРОСМОТР и СУММПРОИЗВ), которые мы обсуждали ранее, ведут себя одинаково. Но вам нужна идеальная формула, верно?

Чтобы сделать формулу чувствительной к регистру ИНДЕКС+ПОИСКПОЗ отлично, поместите это в функцию IF (IF), который проверит ячейку с возвращаемым значением и вернет пустой результат, если она пуста:

=IF(INDIRECT("B"&(1+MATCH(TRUE,EXACT($A$2:$A$7,$G$2),0)))<>"",INDEX($B$2:$B$7, MATCH(TRUE,EXACT($A$2:$A$7,$G$2),0)),"")

=ЕСЛИ(ДВССЫЛ("B"&(1+ПОИСКПОЗ(ИСТИНА;СОВПАД($A$2:$A$7;$G$2);0)))<>"";ИНДЕКС($B$2:$B$7; ПОИСКПОЗ(ИСТИНА;СОВПАД($A$2:$A$7;$G$2);0));"")

В этой формуле:

  • B это столбец с возвращаемыми значениями
  • 1+ число, которое меняет относительное положение ячейки, возвращаемой функцией БОЛЬШЕ ОТКРЫТОГО, на реальный адрес ячейки. Например, в нашей функции БОЛЬШЕ ОТКРЫТОГО задан массив поиска A2: A7, то есть относительное положение ячейки A2 будете 1, потому что он первый в массиве. Но фактическое положение ячейки A2 в столбце есть 2, поэтому мы добавляем 1чтобы компенсировать разницу и иметь функцию КОСВЕННЫЕ (ДВССЫЛ) извлекает значение из нужной ячейки.

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

Я переписал формулу на столбцы Б:Дчтобы строка формул поместилась на скриншоте.

4 способа сделать ВПР чувствительным к регистру в Excel

Формула возврата 0если возвращаемая ячейка содержит ноль.

4 способа сделать ВПР чувствительным к регистру в Excel

Если вы хотите ссылку ИНДЕКС и БОЛЬШЕ ОТКРЫТОГО отображается какое-то сообщение, когда возвращаемое значение пустое, его можно записать в последних кавычках («») формулы, например, так:

=IF(INDIRECT("D"&(1+MATCH(TRUE,EXACT($B$2:$B$7,$G$2),0)))<>"",INDEX($D$2:$D$7, MATCH(TRUE,EXACT($B$2:$B$7,$G$2),0)),"There is nothing to return, sorry.")

=ЕСЛИ(ДВССЫЛ("D"&(1+ПОИСКПОЗ(ИСТИНА;СОВПАД($B$2:$B$7;$G$2);0)))<>"";ИНДЕКС($D$2:$D$7; ПОИСКПОЗ(ИСТИНА;СОВПАД($B$2:$B$7;$G$2);0));"There is nothing to return, sorry.")

4 способа сделать ВПР чувствительным к регистру в Excel

Оставьте комментарий