Эксель найти

Функция SEARCH (ПОИСК) в Excel. Как использовать?

Функция ПОИСК (SEARCH) в Excel используется для определения расположения текста внутри какого-либо текста и указания его точной позиции.

Что возвращает функция

Функция возвращает числовое значение, обозначающее стартовую позицию искомого текста внутри другого текста. Позиция обозначает порядковый номер символа, с которого начинается искомый текст.

Синтаксис

=SEARCH(find_text, within_text, [start_num]) – английская версия

=ПОИСК(искомый_текст;просматриваемый_текст;[начальная_позиция]) – русская версия

Аргументы функции

  • find_text (искомый_текст) – текст или текстовая строка которую вы хотите найти;
  • within_text (просматриваемый_текст) – текст, внутри которого вы осуществляете поиск;
  • [start_num] ([начальная_позиция]) – числовое значение, обозначающее позицию, с которой вы хотите начать поиск. Если не указать этот аргумент, то функци начнет поиск с начала текста.

Дополнительная информация

  • Если стартовая позиция поиска не указана, то поиск текста осуществляется сначала текста;
  • Функция не чувствительна к регистру. Если вам нужна чувствительность к регистру, то используйте функцию НАЙТИ;
  • Функция может обрабатывать подстановочные знаки. В Excel существует три подстановочных знака – ?, *,

.

  • знак “?” – сопоставляет любой одиночный символ;
  • знак “*” – сопоставляет любые дополнительные символы;
  • знак “

” – используется, если нужно найти сам вопросительный знак или звездочку.

  • Функция возвращает ошибку, в случае если искомый текст не найден.
  • Примеры использования функции ПОИСК в Excel

    Пример 1. Ищем слово внутри текстовой строки (с начала)

    На примере выше видно, что когда мы ищем слово “доброе” в тексте “Доброе утро”, функция возвращает значение “1”, что соответствует позиции слова “доброе” в тексте “Доброе утро”.

    Так как функция не чувствительна к регистру, нет разницы каким образом мы указываем искомое слово “доброе”, будь то “ДОБРОЕ”, “Доброе”, “дОброе” и.т.д. функция вернет одно и то же значение.

    Если вам необходимо осуществить поиск чувствительный к регистру – используйте функцию НАЙТИ в Excel.

    Пример 2. Ищем слово внутри текстовой строки (с указанием стартовой позиции поиска)

    Третий аргумент функции указывает на порядковый номер позиции внутри текста, с которой будет осуществлен поиск. На примере выше, функция возвращает значение “1” при поиске слова “доброе” в тексте “Доброе утро”, начиная свой поиск с первой позиции.

    Вместе с тем, если мы указываем функции, что поиск следует начинать со второго символа текста “Доброе утро”, то есть функция в этом случае видит текст как “оброе утро” и ищет слово “доброе”, то результатом будет ошибка.

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

    Пример 3. Поиск слова при наличии нескольких совпадений в тексте

    Функция начинает искать текст со стартовой позиции которую мы можем указать в качестве аргумента, или она начнет поиск с начала текста автоматически. На примере выше, мы ищем слово “доброе ” в тексте “Доброе доброе утро” со стартовой позицией для поиска “1”. В этом случае функция возвращает “1”, так как первое найденное слово “Доброе” начинается с первого символа текста.

    Если мы укажем функции начало поиска, например, со второго символа, то результатом вычисления функции будет “8”.

    Пример 4. Используем подстановочные знаки при работе функции ПОИСК в Excel

    При поиске функция учитывает подстановочные знаки. На примере выше мы ищем текст “c*l”. Наличие подстановочного знака “*” в данном запросе обозначает что мы ищем любо слово, которое начинается с буквы “c” и заканчивается буквой “l”, а что между этими двумя буквами не важно. Как результат, функция возвращает значение “3”, так как в слове “Excel”, расположенном в ячейке А2 буква “c” находится на третьей позиции.

    Источник: excelhack.ru

    Поиск слов в Excel

    В Microsoft Excel часто работают с большими объёмами информации. В нём создаются огромные таблицы на тысячи строк, столбцов и позиций. Отыскать какие-то конкретные данные в таком массиве бывает трудно. А иногда — вообще невозможно. Эту задачу можно упростить. Разберитесь, как в Экселе найти нужное слово. Так вам легче будет ориентироваться в документе. И вы сможете быстро перейти к искомой информации.

    В редакторе таблиц существует несколько способов поиска

    Поиск ячеек

    Чтобы отобразились адреса всех ячеек, в которых есть то, что вы ищите, сделайте следующее:

    1. Если у вас Office 2010, перейдите в Меню — Правка — Найти.
    2. Откроется окно с полем для ввода. Напишите в нём фразу для поиска.
    3. В Excel 2007 эта кнопка есть в меню «Главная» на панели «Редактирование». Она находится справа.
    4. Аналогичного результата во всех версиях можно добиться, если нажать клавиши Ctrl+F.
    5. В поле напечатайте слово, фразу или цифры, которые надо отыскать.
    6. Нажмите «Найти всё», чтобы запустить поиск по целому документу. Если кликните «Далее», программа будет по одной выделять клетки, которые находятся ниже курсора-ячейки Excel.
    7. Подождите, пока процесс закончится. Чем больше документ, тем дольше система будет искать.
    8. Появится список с результатами: именами и адресами клеток, в которых есть совпадения с заданной фразой, и текстом, который в них написан.
    9. При клике на каждую строчку будет выделяться соответствующая ячейка.
    10. Для удобства можете «растянуть» окно. Так в нём будет видно больше строчек.
    11. Чтобы отсортировать данные, кликайте на названия столбцов над результатами поиска. Если нажмёте на «Лист», строчки выстроятся по алфавиту в зависимости от названия листа, если выберите «Значения» — встанут по значению.
    12. Эти столбцы также «растягиваются».

    Параметры поиска

    Можете задать свои условия. Например, запустить поиск по нескольким знакам. Вот как в Экселе найти слово, которое вы не помните целиком:

    1. Введите только часть надписи. Можно хоть одну букву — будут выделены все места, в которых она есть.
    2. Используйте символы * (звёздочка) и ? (вопросительный знак). Они замещают пропущенные знаки.
    3. Вопрос обозначает одну отсутствующую позицию. Если вы напишите, к примеру, «П. », отобразятся ячейки, в которых есть слово из четырёх символов, начинающееся на «П»: «Плуг», «Поле», «Пара» и так далее.
    4. Звезда (*) замещает любое количество знаков. Чтобы отыскать все значения, в которых содержится корень «раст», начните поиск по ключу «*раст*».

    Также вы можете зайти в настройки:

    1. В окне «Найти» нажмите «Параметры».
    2. В разделах «Просматривать» и «Область поиска», укажите, где и по каким критериям надо искать совпадения. Можно выбрать формулы, примечания или значения.
    3. Чтобы система различала строчные и прописные буквы, поставьте галочку в «Учитывать регистр».
    4. Если вы отметите пункт «Ячейка целиком», в результатах появятся клетки, в которых есть только заданная поисковая фраза и ничего больше.

    Параметры формата ячеек

    Чтобы отыскать значения с определённой заливкой или начертанием, используйте настройки. Вот как найти в Excel слово, если оно имеет отличный от остального текста вид:

    1. В окне поиска нажмите «Параметры» и кликните на кнопку «Формат». Откроется меню с несколькими вкладками.
    2. Можете указать определённый шрифт, вид рамки, цвет фона, формат данных. Система будет просматривать места, которые подходят к заданным критериям.
    3. Чтобы взять информацию из текущей клетки (выделенной в этот момент), нажмите «Использовать формат этой ячейки». Тогда программа отыщет все значения, у которых тот же размер и вид символов, тот же цвет, те же границы и тому подобное.

    Поиск нескольких слов

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

    Чтобы в Экселе найти не одно слово, а сразу несколько, сделайте следующее:

    1. Напишите их в строке поиска.
    2. Поставьте между ними звёздочки. Получится «*Текст* *Текст2* *Текст3*». Так отыщутся все значения, содержащие указанные надписи. Вне зависимости от того, есть ли между ними какие-то символы или нет.
    3. Этим способом можно задать ключ даже с отдельными буквами.

    Фильтр

    Вот как искать в Экселе, используя фильтр:

    1. Выделите какую-нибудь заполненную ячейку.
    2. Нажмите Главная — Сортировка — Фильтр.
    3. В верхней строке у клеток появятся стрелочки. Это выпадающее меню. Откройте его.
    4. В текстовом поле введите запрос и нажмите «OK».
    5. В столбце будут отображаться только ячейки, содержащие искомую фразу.
    6. Чтобы сбросить результаты, в выпадающем списке отметьте «Выделить всё».
    7. Чтобы отключить фильтр, повторно нажмите на него в сортировке.

    Этот способ не подойдёт, если вы не знаете, в каком ряду нужное вам значение.

    Чтобы найти в Excel какую-то фразу или число используйте встроенные возможности интерфейса. Можно выбрать дополнительные параметры поиска и включить фильтр.

    Источник: nastroyvse.ru

    НАЙТИ, НАЙТИБ (функции НАЙТИ, НАЙТИБ)

    Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

    В этой статье описаны синтаксис формулы и использование функций НАЙТИ и НАЙТИБ в Microsoft Excel.

    Описание

    Функции НАЙТИ и НАЙТИБ находят вхождение одной текстовой строки в другую и возвращают начальную позицию искомой строки относительно первого знака второй строки.

    Эти функции могут быть доступны не на всех языках.

    Функция НАЙТИ предназначена для языков с однобайтовой кодировкой, а функция НАЙТИБ — для языков с двухбайтовой кодировкой. Заданный на компьютере язык по умолчанию влияет на возвращаемое значение указанным ниже образом.

    Функция НАЙТИ при подсчете всегда рассматривает каждый знак, как однобайтовый, так и двухбайтовый, как один знак, независимо от выбранного по умолчанию языка.

    Функция НАЙТИБ при подсчете рассматривает каждый двухбайтовый знак как два знака, если включена поддержка языка с БДЦС и такой язык установлен по умолчанию. В противном случае функция НАЙТИБ рассматривает каждый знак как один знак.

    К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.

    Синтаксис

    Аргументы функций НАЙТИ и НАЙТИБ описаны ниже.

    Искомый_текст — обязательный аргумент. Текст, который необходимо найти.

    Просматриваемый_текст — обязательный аргумент. Текст, в котором нужно найти искомый текст.

    Начальная_позиция — необязательный аргумент. Знак, с которого нужно начать поиск. Первый знак в тексте “просматриваемый_текст” имеет номер 1. Если номер опущен, он полагается равным 1.

    Замечания

    Функции НАЙТИ и НАЙТИБ работают с учетом регистра и не позволяют использовать подстановочные знаки. Если необходимо выполнить поиск без учета регистра или использовать подстановочные знаки, воспользуйтесь функцией ПОИСК или ПОИСКБ.

    Если в качестве аргумента “искомый_текст” задана пустая строка (“”), функция НАЙТИ выводит значение, равное первому знаку в строке поиска (знак с номером, соответствующим аргументу “нач_позиция” или 1).

    Искомый_текст не может содержать подстановочные знаки.

    Если искомый_текст не отображается в просматриваемый_текст, функция найти и НАЙТИБ возвращают #VALUE! значение ошибки #ЧИСЛО!.

    Если нач_позиция не больше нуля, найти и НАЙТИБ возвращают #VALUE! значение ошибки #ЧИСЛО!.

    Если “нач_позиция” больше, чем длина просматриваемый_текст, найти и НАЙТИБ возвращают #VALUE! значение ошибки #ЧИСЛО!.

    Аргумент “нач_позиция” можно использовать, чтобы пропустить нужное количество знаков. Предположим, например, что для поиска строки “МДС0093.МесячныеПродажи” используется функция НАЙТИ. Чтобы найти номер первого вхождения “М” в описательную часть текстовой строки, задайте значение аргумента “нач_позиция” равным 8, чтобы поиск в той части текста, которая является серийным номером, не производился. Функция НАЙТИ начинает со знака 8, находит искомый_текст в следующем знаке и возвращает число 9. Функция НАЙТИ всегда возвращает номер знака, считая от левого края текста “просматриваемый_текст”, а не от значения аргумента “нач_позиция”.

    Примеры

    Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

    Источник: support.office.com

    Как искать в Excel: поиск слов и ячеек в таблицах

    Программа Excel ориентирована на ускоренные расчеты. Зачастую документы здесь состоят из большого ко.

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

    Поиск слов

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

    • запустить программу Excel;
    • проверить активность таблицы, щелкнув по любой из ячеек;
    • нажать комбинацию клавиш «Ctrl + F»;
    • в строке «Найти» появившегося окна ввести искомое слово;
    • нажать «Найти».

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

    Существует также способ нестрогого поиска, который подходит для ситуаций, когда искомое слово помнится частично. Он предусматривает использование символов-заменителей (джокерные символы). В Excel их всего два:

    • «?» – подразумевает любой отдельно взятый символ;
    • «*» – обозначает любое количество символов.

    Примечательно, при поиске вопросительного знака или знака умножения дополнительно впереди ставится тильда («

    »). При поиске тильды, соответственно – две тильды.

    Алгоритм неточного поиска слова:

    • запустить программу;
    • активировать страницу щелчком мыши;
    • зажать комбинацию клавиш «Ctrl + F»;
    • в строке «Найти» появившегося окна ввести искомое слово, используя вместо букв, вызывающих сомнения, джокерные символы;
    • проверить параметр «Ячейка целиком» (он не должен быть отмеченным);
    • нажать «Найти все».

    Все слова, подходящие под параметры поиска, подсветятся, поэтому их легко будет увидеть и проанализировать.

    Поиск нескольких слов

    Не зная, как найти слово в таблице в Еxcel, следует также воспользоваться функцией раздела «Редактирование» – «Найти и выделить». Далее нужно отталкиваться от искомой фразы:

    • если фраза точная, введите ее и нажмите клавишу «Найти все»;
    • если фраза разбита другими ключами, нужно при написании ее в строке поиска дополнительно проставить между всеми словами «*».

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

    Поиск ячеек

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

    Для поиска ячеек с формулами выполняются следующие действия.

    1. В открытом документе выделить ячейку или диапазон ячеек (в первом случае поиск идет по всему листу, во втором – в выделенных ячейках).
    2. Во вкладке «Главная» выбрать функцию «Найти и выделить».
    3. Обозначить команду «Перейти».
    4. Выделить клавишу «Выделить».
    5. Выбрать «Формулы».
    6. Обратить внимание на список пунктов под «Формулами» (возможно, понадобится снятие флажков с некоторых параметров).
    7. Нажать клавишу «Ок».

    Для поиска объединенных ячеек потребуется выполнение следующих манипуляций.

    1. Перейти во вкладку «Главная».
    2. Выбрать функцию «Найти и выделить».
    3. Нажать на команду «Найти».
    4. Перейти в «Параметры» и выбрать «Формат».
    5. Здесь выделить функцию «Выравнивание», поставить отметку «Объединить ячейки».
    6. Нажать на «Ок».
    7. Нажать на кнопку «Найти все» и проанализировать список ячеек, которые объединены на соответствующем листе.

    При нажимании кнопкой мыши на элемент в списке происходит выделение объединенной ячейки на листе. Дополнительно доступна функция «Отменить объединение ячеек».

    Выполнение представленных выше действий приводит к нахождению всех объединенных ячеек на листе и при необходимости отмене данного свойства. Для поиска скрытых ячеек проводятся следующие действия.

    1. Выбрать лист, требующий анализа на присутствие скрытых ячеек и их нахождения.
    2. Нажать клавиши «F5_гт_ Special».
    3. Нажать сочетание клавиш «CTRL + G_гт_ Special».

    Можно воспользоваться еще одним способом для поиска скрытых ячеек:

    1. Открыть функцию «Редактирование» во вкладке «Главная».
    2. Нажать на «Найти».
    3. Выбрать команду «Перейти к разделу». Выделить «Специальные».
    4. Попав в группу «Выбор», поставить галочку на «Только видимые ячейки».
    5. Нажать кнопку «Ок».

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

    Если интересующая ячейка обозначена условным форматом, ее несложно найти и применить для копирования, удаления или редактирования непосредственно условного формата. Если речь идет о ячейке с определенным условным форматом, тогда на помощь придет функция «Выделить группу ячеек».

    Чтобы найти ячейки, для которых применено условное форматирование:

    • нажать на ячейку, не предусматривающую условное форматирование;
    • выбрать функцию «Редактирование» во вкладке «Главная»;
    • нажать на кнопку «Найти и выделить»;
    • выделить категорию «Условное форматирование».

    Чтобы найти ячейки, для которых применено одинаковое условное форматирование:

    • выбрать ячейку, предусматривающую условное форматирование, требующую поиска;
    • выбрать группу «Редактирование» во вкладке «Главная»;
    • нажать на кнопку «Найти и выделить»;
    • выбрать категорию «Выделить группу ячеек»;
    • установить свойство «Условные форматы»;
    • напоследок нужно зайти в группу «Проверка данных» и установить аналогичный пункт.

    Поиск через фильтр

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

    • выделить заполненную ячейку;
    • во вкладке «Главная» выбрать функцию «Сортировка»;
    • нажать на кнопку «Фильтр»;
    • открыть выпадающее меню;
    • ввести искомый запрос;
    • нажать кнопку «Ок».

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

    Источник: freesoft.ru

    Функция НАЙТИ() в EXCEL

    Синтаксис функции

    НАЙТИ ( искомый_текст ; просматриваемая_строка ;[нач_позиция])

    Искомый_текст — текст, который требуется найти.

    Просматриваемая_строка — текст, в которой ищется Искомый_текст .

    Нач_позиция — позиция знака в просматриваемой_строке, с которой должен начинаться поиск. Если аргумент нач_позиция опущен, то предполагается значение 1.

    Если искомый_текст не найден, возвращается значение ошибки #ЗНАЧ!

    Функция НАЙТИ() учитывает РЕгиСТР букв, т.е. результат поиска в строке ” ПЕРВЫЙ первый ” будет разным для формул =НАЙТИ(“ПЕРВЫЙ”;”ПЕРВЫЙ первый”) и =НАЙТИ(“первый”;”ПЕРВЫЙ первый”) . Первая вернет 1, вторая 8.

    Примеры

    Формула =НАЙТИ(“к”;”Первый канал”) вернет 8, т.к. буква к находится на 8-й позиции слева. Формула =НАЙТИ(“К”;”Первый канал”) вернет значение ошибки #ЗНАЧ!, т.к. с учетом регистра строка Первый канал не содержит букву К .

    Пусть в ячейке А2 введена строка Первый канал – лучший . Формула =НАЙТИ(СИМВОЛ(32);A2) вернет 7, т.к. символ пробела (код 32) находится на 7-й позиции.

    Чтобы найти позицию второго вхождения буквы “а” в строке “мама мыла раму” используйте формулу =НАЙТИ(“а”;”мама мыла раму”;НАЙТИ(“а”;”мама мыла раму”)+1). Чтобы определить есть ли третье вхождение буквы “м” в строке “мама мыла раму” используйте формулу =ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(“мама мыла раму”;”м”;””;3))=ДЛСТР(“мама мыла раму”);”Нет третьего вхождения”;”Есть третье вхождение”) .

    Функция НАЙТИ() vs ПОИСК()

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

    Связь с функциями ЛЕВСИМВ() , ПРАВСИМВ() и ПСТР()

    Функция НАЙТИ() может быть использована совместно с функциями ЛЕВСИМВ() , ПРАВСИМВ() и ПСТР() .

    Например, в ячейке А2 содержится фамилия и имя “Иванов Иван”, то формула =ЛЕВСИМВ(A2;НАЙТИ(СИМВОЛ(32);A2)-1) извлечет фамилию, а =ПРАВСИМВ(A2;ДЛСТР(A2)-НАЙТИ(СИМВОЛ(32);A2)) – имя. Если между именем и фамилией содержится более одного пробела, то для работоспособности вышеупомянутых формул используйте функцию СЖПРОБЕЛЫ() .

    Источник: excel2.ru

    Найти в ячейке любое слово из списка

    Предположим, вы получаете от поставщика/заказчика/клиента заполненную таблицу с перечнем продукции:

    и эту таблицу необходимо сравнить с артикулами/кодами товара в имеющемся у вас каталоге продукции:

    Как видно – в нашем каталоге только артикулы без наименований. У заказчика же помимо артикулов еще и название товара, т.е. много лишнего. И вам надо понять какие товары присутствуют в вашем каталоге, а какие нет:

    Стандартных формул в Excel для подобного поиска и сравнения нет. Конечно, можно попробовать применить ВПР с подстановочными символами сначала к одной таблице, а затем к другой. Но если подобную операцию необходимо проделывать раз за разом, то прописывать по несколько формул к каждой таблице прямо скажем – не комильфо.
    Поэтому я и решил сегодня продемонстрировать формулу, которая без всяких доп. манипуляций поможет такое сравнение сделать. Чтобы разобраться самостоятельно рекомендую скачать файл:
    Скачать файл:

    Tips_All_AnyoneOfArray.xls (49,5 KiB, 16 068 скачиваний)

    На листе “Заказ” в этом файле таблица, полученная от заказчика, а на листе “Каталог” наши артикулы.
    Сама формула на примере файла будет выглядеть так:

    =ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11; A2 );Каталог!$A$2:$A$11)
    =LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$A$2:$A$11)
    эта формула вернет название артикула, если в тексте есть хоть один артикул из каталога и #Н/Д (#N/A) если артикул не найден в каталоге.
    Прежде чем облагородить эту формулу всякими дополнениями(вроде виде убирания ненужных #Н/Д ) давайте разберемся как она работает.
    Функция ПРОСМОТР (LOOKUP) ищет заданное значение( 2 ) в указанном диапазоне(массиве – второй аргумент). В качестве диапазона обычно приводится массив ячеек, но функция ПРОСМОТР имеет первую нужную нам особенность – она старается преобразовать непосредственно в массив любое выражение, записанное вторым аргументом. Иными словами она вычисляет выражение в этом аргументе, чем мы и пользуемся, подставив в качестве второго аргумента выражение: 1/ПОИСК(Каталог!$A$2:$A$11;A2) . Часть ПОИСК(Каталог!$A$2:$A$11;A2) ищет поочередно каждое значение из списка Каталога в ячейке A2 (наименование из таблицы Заказчика). Если значение найдено, то возвращается номер позиции первого символа найденного значения. Если значение не найдено – возвращается значение ошибки #ЗНАЧ!(#VALUE!). Теперь вторая особенность: функция требует расположения данных в массиве в порядке возрастания. Если данные расположены иначе – функция будет просматривать массив до тех пор, пока не найдет значение больше искомого, но максимально к нему приближенное(хотя если данные позволяют – для более точного поиска все же лучше отсортировать список по возрастанию). Поэтому сначала мы 1 делим на выражение ПОИСК(Каталог!$A$2:$A$11;A2) , чтобы получить массив вида: <0,0181818181818182:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!>
    Ну а в качестве искомого значения мы подсовываем функции число 2 – заведомо большее число, чем может вообще встретиться в массиве(т.к. единица, поделенная на любое число будет меньше двух). И как результат мы получим позицию в массиве, в которой встречается последнее совпадение из каталога. После чего функция ПРОСМОТР запомнит эту позицию и вернет значение из массива Каталог!$A$2:$A$11 (третий аргумент), записанное в этом массиве для этой позиции.
    Вы можете просмотреть этапы вычисления функции самостоятельно для каждой ячейки, я здесь просто приведу этапы чуть в расширенном для понимания виде:

    Теперь немного облагородим функцию и сделаем еще пару реализаций
    Реализация 1:
    Вместо артикулов и #Н/Д выведем для найденных позиций “Есть” , а для отсутствующих “Не найден в каталоге” :
    =ЕСЛИ(ЕНД(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2)));”Не найден в каталоге”;”Есть”)
    =IF(ISNA(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2))),”Не найден в каталоге”,”Есть”)
    работа функции проста – с ПРОСМОТР(LOOKUP) разобрались, поэтому остались только ЕНД и ЕСЛИ.
    ЕНД (ISNA) возвращает ИСТИНА (TRUE) если выражение внутри неё возвращает значение ошибки #Н/Д (#N/A) и ЛОЖЬ (FALSE) если выражение внутри не возвращает значение этой ошибки.
    ЕСЛИ (IF) возвращает то, что указано вторым аргументом если выражение в первом равно ИСТИНА (TRUE) и то, что указано третьим аргументом, если выражение первого аргумента ЛОЖЬ (FALSE) .

    Реализация 2:
    Вместо #Н/Д выведем “Не найден в каталоге” , но при этом если артикулы найдены – выведем названия этих артикулов:
    =ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$A$2:$A$11);”Нет в каталоге”)
    =IFERROR(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$A$2:$A$11),”Нет в каталоге”)
    Про функция ЕСЛИОШИБКА (IFERROR) я подробно рассказывал в этой статье: Как в ячейке с формулой вместо ошибки показать 0.
    Если вкратце, то если выражение, заданное первым аргументом функции, возвращает значение любой ошибки, то функция вернет то, что записано вторым аргументом(в нашем случае это текст “Не найден в каталоге” ). Если же выражение не возвращает ошибку, то функция ЕСЛИОШИБКА запишет то значение, которое было получено выражением в первом аргументе(в нашем случае это будет наименование артикула).

    Реализация 3
    Надо не просто определить какому артикулу соответствует, но и вывести цену для наименования по этому артикулу(сами цены должны быть расположены в столбце B листа Каталог):
    =ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$B$2:$B$11);””)
    =IFERROR(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$B$2:$B$11),””)

    Пара важных замечаний:

    • данные на листе с артикулами не должны содержать пустых ячеек . Иначе с большой долей вероятности формула будет возвращать значение именно пустой ячейки, а не то, которое подходит под условия поиска
    • формула осуществляет поиск таким образом, что ищется любое совпадение. Например, в качестве артикула записана цифра 1, а в строке наименований может встречаться помимо целой 1 еще и 123, 651123, FG1412NM и т.п. Для всех этих наименований может быть подобран артикул 1, т.к. он содержится в каждом наименовании. Как правило это может произойти, если артикул 1 расположен в конце списка

    Поэтому желательно перед использованием формулы отсортировать список по возрастанию(от меньшего к большему, от А до Я).

    В приложенном в начале статьи примере вы найдете все разобранные варианты.

    Если же вам понадобится выводить все наименования, то можно воспользоваться функцией СОДЕРЖИТ_ОДНО_ИЗ из моей надстройки MulTEx.

    Статья помогла? Поделись ссылкой с друзьями!

    Источник: www.excel-vba.ru