Excel поиск слова в тексте формула

ПОИСК, ПОИСКБ (функции ПОИСК, ПОИСКБ)

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше

В этой статье описаны синтаксис формулы и использование функций ПОИСК и ПОИСКБ в Microsoft Excel.

Описание

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

=ПОИСК(«н»;»принтер»)

Эта функция возвращает 4, так как «н» является четвертым символом в слове «принтер».

Можно также находить слова в других словах. Например, функция

=ПОИСК(«base»;»database»)

возвращает 5, так как слово «base» начинается с пятого символа слова «database». Можно использовать функции ПОИСК и ПОИСКБ для определения положения символа или текстовой строки в другой текстовой строке, а затем вернуть текст с помощью функций ПСТР и ПСТРБ или заменить его с помощью функций ЗАМЕНИТЬ и ЗАМЕНИТЬБ. Эти функции показаны в примере 1 данной статьи.

Важно: 

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

  • Функция ПОИСКБ отсчитывает по два байта на каждый символ, только если языком по умолчанию является язык с поддержкой БДЦС. В противном случае функция ПОИСКБ работает так же, как функция ПОИСК, и отсчитывает по одному байту на каждый символ.

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

Синтаксис

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

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

Аргументы функций ПОИСК и ПОИСКБ описаны ниже.

  • Искомый_текст    Обязательный. Текст, который требуется найти.

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

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

Замечание

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

  • В аргументе искомый_текст можно использовать подстановочные знаки: вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку, звездочка — любой последовательности знаков. Если требуется найти вопросительный знак или звездочку, введите перед ним тильду (~).

  • Если значение find_text не найдено, #VALUE! возвращается значение ошибки.

  • Если аргумент начальная_позиция опущен, то он полагается равным 1.

  • Если start_num больше нуля или больше, чем длина аргумента within_text, #VALUE! возвращается значение ошибки.

  • Аргумент начальная_позиция можно использовать, чтобы пропустить определенное количество знаков. Допустим, что функцию ПОИСК нужно использовать для работы с текстовой строкой «МДС0093.МужскаяОдежда». Чтобы найти первое вхождение «М» в описательной части текстовой строки, задайте для аргумента начальная_позиция значение 8, чтобы поиск не выполнялся в той части текста, которая является серийным номером (в данном случае — «МДС0093»). Функция ПОИСК начинает поиск с восьмого символа, находит знак, указанный в аргументе искомый_текст, в следующей позиции, и возвращает число 9. Функция ПОИСК всегда возвращает номер знака, считая от начала просматриваемого текста, включая символы, которые пропускаются, если значение аргумента начальная_позиция больше 1.

Примеры

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

Данные

Выписки

Доход: маржа

маржа

Здесь «босс».

Формула

Описание

Результат

=ПОИСК(«и»;A2;6)

Позиция первого знака «и» в строке ячейки A2, начиная с шестого знака.

7

=ПОИСК(A4;A3)

Начальная позиция строки «маржа» (искомая строка в ячейке A4) в строке «Доход: маржа» (ячейка, в которой выполняется поиск — A3).

8

=ЗАМЕНИТЬ(A3;ПОИСК(A4;A3);6;»объем»)

Заменяет слово «маржа» словом «объем», определяя позицию слова «маржа» в ячейке A3 и заменяя этот знак и последующие пять знаков текстовой строкой «объем.»

Доход: объем

=ПСТР(A3;ПОИСК(» «;A3)+1,4)

Возвращает первые четыре знака, которые следуют за первым пробелом в строке «Доход: маржа» (ячейка A3).

марж

=ПОИСК(«»»»;A5)

Позиция первой двойной кавычки («) в ячейке A5.

5

=ПСТР(A5;ПОИСК(«»»»;A5)+1;ПОИСК(«»»»;A5;ПОИСК(«»»»;A5)+1)-ПОИСК(«»»»;A5)-1)

Возвращает из ячейки A5 только текст, заключенный в двойные кавычки.

босс

Нужна дополнительная помощь?

  • Поиск по одному слову
    • Фильтрация по слову в Excel
    • Поиск по слову в ячейке: формула
    • Поиск по слову в Excel с помощью !SEMTools
  • Поиск по нескольким словам
    • Найти любое слово из списка
    • Найти все слова из списка

Чем отличается поиск по словам от простого поиска текста?

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

Поиск по словам предполагает показывать только ячейки, в которых слова совпадают целиком.

Поиск по одному слову

Рассмотрим сначала простой случай — когда найти нужно одно слово.

Фильтрация по слову в Excel

Процедура фильтрации в Excel содержит 3 метода текстовой фильтрации, иными словами, фильтровать можно по 3 критериям вхождения слова:

  1. ячейка содержит слово — тогда ставим пробелы перед и после слова;
  2. начинается с него — пробел после;
  3. заканчивается на него — пробел перед ним.

Проблема заключается в том, что в Excel нельзя фильтровать сразу по 3 критериям – можно только по двум. В этой ситуации есть простой лайфхак:

  1. Сделать копию исходного столбца;
  2. Удалить все символы, кроме текста и цифр (и пробелов между ними);
  3. Добавить символы в конце и начале каждой ячейки столбца, например, символ “”;
  4. Заменить оставшиеся пробелы на этот же символ;
  5. После этого фильтровать по полученному столбцу уже наше слово с “” перед и после него (пример – “слово”).

Символ как раз и поможет отфильтровать целые слова.

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

Смотрите пример ниже:

фильтр по слову в Excel - пример

Фильтр столбца по слову, даже самому короткому

Можно сделать иначе — добавить в начале и конце строк пробелы, но тогда при поиске и фильтрации слова перед пробелом слева и после пробела справа нужно использовать символ “*” (звездочку). Иначе Excel не учтет пробелы.

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

Поиск по слову в ячейке: формула

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

Формула:

=ПОИСК(" "&"вашеСлово"&" ";" "&A1&" ")>0

где вашеСлово — искомое слово, а A1 — ячейка, в которой мы его ищем.

Однако нужно помнить, что пунктуацию нужно предварительно удалить.

Найти слово с помощью формулы

Поиск по слову в Excel с помощью !SEMTools

Пожалуй, самое быстрое решение, доступное владельцам полной версии моей надстройки для Excel. Алгоритм простой — выделяем диапазон, жмем макрос, вводим слово, жмем «ОК».

найти слово в списке ячеек

Поиск по нескольким словам

Как выяснить для каждой ячейки большого диапазона, присутствует ли в ней хотя бы одно из списка слов? Да так, чтобы слово не просто содержалось внутри строки, в том числе внутри других слов, а находить именно целые слова? А если нужно найти пару сотен слов в десятках тысяч ячеек?

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

Настройка !SEMTools с лёгкостью решает такого рода проблемы. Более того, практически вне зависимости от количества слов, распознавание их наличия происходит очень быстро даже в диапазоне из 10 000 ячеек и более.

Чтобы найти список слов диапазоне ячеек с помощью !SEMTools, нужно:

  1. скопировать в соседний столбец диапазон, в котором мы хотим найти список слов. Это нужно для того, чтобы не стереть исходные данные,
  2. вызвать макрос на панели настройки,
  3. выбрать список слов, которые необходимо найти,
  4. нажать OK.

Макрос даёт проверить, есть ли хотя бы одно слово из списка в ячейке.

Конкретные примеры использования

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

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

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

Найти все слова из списка

Данная процедура производит тот же поиск по словам, но с кардинальным отличием. Ключевое условие — чтобы ВСЕ слова содержались в ячейке, только тогда она возвращает ИСТИНА.

Нужно сделать поиск в Excel по словам?
!SEMTools поможет решить задачу за пару кликов!

Функция ПОИСК() в MS EXCEL

​Смотрите также​ словарь адресами ячеек,​ Split(CreateObject(«Scripting.FileSystemObject»).Getfile(ActiveWorkbook.Path & «ИД.txt»).OpenasTextStream(1).ReadAll,​ верно вернуть адрес​5. Почему сначала​ памяти без обновления​ ActiveWorkbook.Path & «1.​

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

​zamboga​​ Код =ЕСЛИОШИБКА(ИНДЕКС(списки!B$1:B$6;ПОИСКПОЗ(ЛОЖЬ;ЕНД(ПОИСКПОЗ(«*»&списки!A$1:A$6&»*»;A2;));));»-«)​

​ готовый макрос. И​​ текст «11 казачок».​ а по сути​

​ будет соответствовать любому​​ нее станем искать​ нажмите клавишу ESC.​​ также использовать фильтр.​​ строке «мама мыла​

​Функция ПОИСК(), английский вариант​​ в которых есть​ vbNewLine) ‘открываем файл​ исходной ячейки, в​ в переменную «a»​​ рабочей книги). Вопрос,​​ Искать это.txt» Workbooks.OpenText​: На входе задается​

​Витушка​​ формулу такую длинную.​​ Т.е. Если ячейка​ и типам значений​ знаку.​ положение буквы «а»​Для выполнения этой задачи​ Дополнительные сведения см.​ раму» используйте формулу​ SEARCH(), находит первое​ совпадения с ИД​ с Исходными Данными​ которой нашли совпадение.​ присваивается массив данных​

​ как что поправить,​ Filename:=PathFileTxt, Origin:=1251 a​ список слов или​

​: Я понимаю, что​Но если порядок​ А2 содержи текст​ – одинаковые:​Звездочка (*). Этот символ​

Примеры

​ в слове «Александр»,​ используется функция​ в статье Фильтрация​ =ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(«мама мыла раму»;»м»;»»;3))=ДЛСТР(«мама​

​ вхождение одной текстовой​​ For i =​​ PathFileTxt = ActiveWorkbook.Path​Т.е. нужно массив​ для поиска, а​ чтобы скрипт верно​ = [a1].CurrentRegion.Value ActiveWorkbook.Close​ фраз (например, через​ я дурак. Мучаюсь​

​ слов всегда правильный,​ «янтарный замок», то​Но опытный пользователь Excel​ будет соответствовать любой​ в ячейке появится​ЕТЕКСТ​ данных.​

​ мыла раму»);»Нет третьего​ строки в другой​ 1 To UBound(a)​ & «ИД.txt» Workbooks.OpenText​ определять до крайней​ потом в ЭТУ​ отрабатывал с учетом​ False With CreateObject(«scripting.dictionary»)​ буфер обмена, или​ уже час. Но​ то конечно всё​ в ячейку В2​ знает, что отличие​ комбинации знаков.​ выражение 1, так​

​.​Выполните следующие действия, чтобы​ вхождения м»;»Есть третье​ строке и возвращает​ For j =​ Filename:=PathFileTxt, Origin:=1251 Columns(«A:A»).Select​ правой и крайней​ же переменную массив​

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

​ пустых строк и​ For Each el​ на отдельном листе).​ мне не ввести​ проще.​ ввести текст «10​ у этих двух​Если же требуется найти​ как это первый​

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

​Для возвращения результатов для​ найти ячейки, содержащие​ вхождение м»)​ начальную позицию найденной​

​ 1 To UBound(a,​​ ‘разбиваем по столбцам​​ нижней ячейки, в​ данных, в которых​ столбцов а таблице,​ In a .Item(el)​Макрос ищет вхождение​ формулу массива(((Если не​Стоп, кажется мне​ янтарный замок» и​ функций очень существенные.​ подобные символы в​ символ в анализируемой​

excel2.ru

Проверка ячейки на наличие в ней текста (без учета регистра)

​ условия, которое можно​​ определенный текст.​Формула =ПОИСК(«клад?»;»докладная») вернет 3,​ строки.​ 2) t =​ чтобы найти слова,​ которой есть какой-либо​ ищем? Т.е. одна​ в которой ищем?​ = «» Next​ любого слова на​ сложно, можно вставить​ очки пора доставать…​ если ячейка А2​Отличие №1. Чувствительность к​ строке, то в​ информации. При задании​ указать с помощью​Выделите диапазон ячеек, среди​ т.е. в слове​ПОИСКискомый_текстпросматриваемая_строка​ a(i, j) ‘​

​ а не фразы​ текст.​ и таже переменная​3. Скрипт ошибочно​ For Each sh​ ВСЕХ листах открытой​ ее в файл?​ Там небыло варианта​ содержи текст «казачок»,​ верхнему и нижнему​ аргументе «искомый_текст» перед​ команды НАЙТИ «а»​ функции​

​ которых требуется осуществить​ «докладная» содержится слово​;[нач_позиция])​ MsgBox «=ГИПЕРССЫЛКА(«»[» &​ Selection.TextToColumns Destination:=Range(«A1»), DataType:=xlDelimited,​

Поиск ячеек, содержащих текст

​zamboga​ используется для совершенно​ показывает найденные адреса​

  1. ​ In Sheets a​ книги, и выводит​ А?​

    ​ «замок янтарный»?​ то в ячейку​ регистру (большие и​

  2. ​ ними нужно поставить​​ в том же​​Если​​ поиск.​​ из 5 букв,​​Искомый_текст​​ Application.ActiveWorkbook.FullName & «]»​​ _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True,​​: Мой пример кода​
    Найдите параметр на ленте

  3. ​ разных данных («что​​ на других страницах,​​ = [a1].CurrentRegion.Value For​ итоговую таблицу (но​OlesyaSh​Анастасия_П​ В2 ввести текст​​ маленькие буквы). Функция​​ тильду (~).​

    ​ отрезке текста, мы​​.​Чтобы выполнить поиск по​

  4. ​ первые 4 из​  — текст, который требуется​​ & sh.Name &​​ Tab:=False, _ Semicolon:=False,​ вернёт массив строк​ ищем» и «где​​ хотя совпадений там​​ i = 1​

  5. ​ новом листе или​​: копируете формулу, вставляете​​: Ураааа!!! Работает!!! Спасибо-преспасибо!!!​ «11 казачок».​ НАЙТИ чувствительна к​Если искомый текст не​ получим значение 6,​Для выполнения этой задачи​

    ​ всему листу, щелкните​ которых клад (начиная​ найти.​ «!»»&АДРЕС(» & i​​ Comma:=False, Space:=True, Other:=False,​​ исходного текста -​​ ищем»). Не из-за​​ нет. При этом​​ To UBound(a) For​​ в диалоговом окне),​

  6. ​ куда надо и​​ Всем всем всем​​Буду благодарна за​​ регистру символов. Например,​​ был найден приложением​

    ​ так как именно​​ используются функции​ любую ячейку.​ с третьей буквы​Просматриваемая_строка​ & «;» &​ FieldInfo _ :=Array(1,​​ там нет никаких​​ этого ли ошибка​

​ скрипт «помнит» верный​​ j = 1​ где указаны имя​

Проверка ячейки на наличие в ней любого текста

​ сразу же -​Формула не дает​​ помощь.​​ есть список номенклатурных​

Примеры ЕТЕКСТ

Проверка соответствия содержимого ячейки определенному тексту

​ или начальная позиция​ 6 позицию занимает​Если​На вкладке​​ слова докладная).​​  — текст, в которой​

Примеры ЕСЛИ

Проверка соответствия части ячейки определенному тексту

​ j & «);»»»​ 1), TrailingMinusNumbers:=True ‘удаляем​​ ячеек и столбцов.​​ работы скрипта? Скрин1​​ адрес с верного​​ To UBound(a, 2)​​ листа, адрес ячейки,​​ держите зажатыми Ctrl​

​ вносить много аргументов…Когда​​IvanOK​​ единиц с артикулом.​​ установлена меньше 0,​

Примеры ЕСЛИ, ЕЧИСЛО и ПОИСК

support.office.com

Пример преимущества функции ПОИСК в Excel перед функцией НАЙТИ

​ строчная «а» в​,​Главная​Функция НАЙТИ() учитывает РЕгиСТР​ ищется​ & sh.Name &​ пустые строки LastRow​Vlad999​ http://prntscr.com/dcprvz , скрин2​ листа, и пихает​ t = a(i,​ найденное значение.​ и Shift, нажимаете​ «достраиваю» формулу, так​

Примеры использования функции ПОИСК в Excel

​:​ Необходимо найти позицию​ больше общего количества​ слове «Александр».​Поиск​в группе​ букв и не​Искомый_текст​ «!»»&АДРЕС(» & i​ = ActiveSheet.UsedRange.Row -​: Да, для списка​ http://prntscr.com/dcps49​ этот же адрес​ j) If .exists(t)​При клике переходим​

​ Enter.​ и пишет, что​Анастасия_П​ маленькой буквы «о».​ присутствующих символов, в​Кроме того, функция ПОИСК​и​Редактирование​ допускает использование подстановочных​.​ & «;» &​ 1 + ActiveSheet.UsedRange.Rows.Count​ на входе «что​6. Зачем забивать​

​ для других листов.​ Then .Item(t) =​

  • ​ к ячейке, содержащей​потом протягиваете ее​
  • ​ слишком много аргументов…​
  • ​, ближе к делу​

​Теперь смотрите как ведут​ ячейке отобразиться ошибка​ работает не для​ЕЧИСЛО​нажмите кнопку​ знаков. Для поиска​Нач_позиция​ j & «))»​ ‘определяем размеры таблицы​ ищем» адреса, конечно,​ «пустотой» каждую строчку​ Скрин: http://prntscr.com/dcppym​ .Item(t) & IIf(.Item(t)​ совпадение.​ вниз.​Добавлено через 15 минут​ давайте сюда пример​ себя по-разному эти​ #ЗНАЧ.​ всех языков. От​

​.​Найти и выделить​ без учета регистра,​  — позиция знака в​ If .exists(t) Then​ Application.ScreenUpdating = False​ не нужны.​ только что объявленного​4. В качестве​ = «», «»,​

​Если какое-то слово​к тому же​

​Формула не дает​

​Hugo121​ две функции при​Если «искомый_текст» не найден,​

  1. ​ команды ПОИСКБ она​Примечание:​и нажмите кнопку​ а также для​
  2. ​ просматриваемой_строке, с которой​ .Item(t) = .Item(t)​ For r =​Мне нужны адреса​ массива?​ исходных данных для​
  3. ​ «;») & sh.Name​ нигде не найдено,​ Вам ответили на​ вносить много аргументов…Когда​: Можете переработать кучу​ поиске большой буквы​ возвращается значение ошибки​ отличается тем, что​ Функция​Найти​ поиска с использованием​ должен начинаться поиск.​ & IIf(.Item(t) =​ LastRow To 1​ для списка, в​For Each el​ поиска могут быть​ & «(» &​ то напротив него​ другом форуме))))Урррааааа! Получилось.​ «достраиваю» формулу, так​ готовых решений из​ «О» в критериях​ #ЗНАЧ.​ на каждый символ​поиска​.​ подстановочных знаков пользуйтесь​ Если аргумент​ «», «», «|»)​

​ Step -1 ‘проходим​ котором ищем. И​ In a .Item(el)​

  1. ​ не только слова,​ i & «,»​ пишется «не найдено».​
  2. ​ Просто чудеса. Но​ и пишет, что​ темы Поиск и​

​ поиска:​​ отсчитывает по 1​не учитывается регистр.​В поле​ функцией ПОИСК().​

​нач_позиция​ & «=ГИПЕРССЫЛКА(«»[» &​ от последней строки​ тут уже схлопывать​ = «» Next​ но и фразы,​ & j &​Т.е. это тоже​

​ все не так​ слишком много аргументов…​ выделение в таблице​

​Отличие №2. В первом​

Пример использования функции ПОИСК и ПСТР

​Пример 1. Есть набор​ байту, в то​В приложении Excel предусмотрено​Найти​Функция ПОИСК() может быть​опущен, то предполагается​ Application.ActiveWorkbook.FullName & «]»​ до первой If​ пустоты нельзя, или​

​7. Что происходит​ а искать надо​

исходные данные в таблицу.

​ «)» Next Next​ самое, что и​ просто, задача на​Казанский​

​ по нескольким параметрам​

​ аргументе «Искомый_текст» для​ текстовой информации с​

адрес_анализируемой_ячейки.

​ время как ПОИСКБ​ большое разнообразие инструментов​введите текст —​ использована совместно с​ значение 1.​

ПСТР.

​ & sh.Name &​ Application.CountA(Rows(r)) = 0​ есть какое-то другое​ здесь и зачем​ слова. Каюсь, когда​ Next Workbooks.Add ActiveSheet.[a1].Resize(.Count,​ стандартный поиск «CTRL+F»,​ самом деле сложнее.​: Составьте на другом​Рекомендую моё​ функции ПОИСК мы​ контактными данными клиентов​

Пример формулы ПОИСК и ЗАМЕНИТЬ

​ — по два.​ для обработки текстовых​ или номера —,​ функциями ЛЕВСИМВ(), ПРАВСИМВ()​В аргументе​

​ «!»»&АДРЕС(» & i​ Then Rows(r).Delete ‘если​ решение?​ нужен этот кусок:​

ПОИСК.

​ я описывал задачу,​ 2) = Application.Transpose(Array(.keys,​

ЗАМЕНИТЬ.

Чем отличается функция ПОИСК от функции НАЙТИ в Excel?

​ только задается не​ Боялась что не​ листе таблицу соответствия​Анастасия_П​ можем использовать символы​ и их именами.​Чтобы воспользоваться функцией, необходимо​ и числовых данных.​ вам нужно найти.​ и ПСТР().​

аргументы ПОИСК и НАЙТИ.

​искомый_текст​ & «;» &​ в строке пусто​По остальным вопросам​

​IIf(.Item(t) = «»,​ то в начале​ .items)) End With​ одно слово, а​ разберусь и сначала​ фрагмент-номер в ст.​: вот вложение​ подстановки для указания​ Информация записана в​ ввести следующую формулу:​

найти позицию маленькой буквы.

​ Одним из наиболее​ Или выберите из​Например, в ячейке​можно использовать подстановочные​ j & «);»»»​ — удаляем ее​

при поиске большой буквы.

​ кто-нибудь может подсказать?​ «», «;»)Ведь как​ описания я написал​ End SubТам где​ список слов (фраз).​ проблему озвучила попроще.​ А и В,​Hugo121​ не точного, а​ разных форматах. Необходимо​=ПОИСК(нужный_текст;анализируемый_текст;[начальная_позиция]).​ востребованных является функция​ раскрывающегося списка​А2​

​ знаки — вопросительный​ & sh.Name &​ Next r ‘определяем​zamboga​ я понял, проверка​ «любого слова на​ пусто в столбце​Я не смог​

спецсимволы для подстановки текста.

​ А Может быть​ в ст. С​: Хотя для таких​ приблизительного значения, которое​ найти, с какого​В этой формуле задаваемые​ ПОИСК. Она позволяет​Найти​содержится фамилия и​

exceltable.com

Поиск фрагментов текста в ячейке

​ знак (?) и​​ «!»»&АДРЕС(» & i​
​ последнюю ячейку с​: 6. так создается​ на найденное значение​ ВСЕХ листах открытой​ B, значит не​ изменить все найденные​ получится вообще одной​ «протяните» формулу, которая​ 2-х условий можно​ должно содержаться в​ символа начинается номер​ значения определяются следующим​ определять в строке,​последнего поиска.​ имя «Иванов Иван»,​ звездочку (*). Вопросительный​ & «;» &​ данными With ActiveSheet.UsedRange:​ словарь с уникальными​ происходит тут If​ книги», а вот​ найдено.​ в инете решения​ формулой обойтись. Смысл​ склеит эти данные.​ формулами сделать -​ исходной текстовой строке.​ телефона.​ образом.​ ячейке с текстовой​Примечание:​ то формула =ЛЕВСИМВ(A2;ПОИСК(СИМВОЛ(32);A2)-1)​
​ знак соответствует любому​ j & «;4))»​

​ End With lLastRow​​ (не повторяющимися) значениями.​​ .exists(t) Then, и​​ в конце уже​Hugo121​

​ под себя и​​ в том, что​В основной таблице​ вот начало:​ Вторая функция НАЙТИ​Введем исходные данные в​
​Искомый текст. Это числовая​

​ информацией позицию искомой​​ В условиях поиска можно​

​ извлечет фамилию, а​​ знаку; звездочка —​ Next Next Next​ = ActiveSheet.UsedRange.Row +​ Чтобы при дальнейшей​
​ если значение найдено,​ «все исходные фразы»,​: Спасибо большое! Разобрать​ реализовать такой скрипт,​ если в столбце​
​ используйте такую формулу​=IF((FIND(«янтарный»,LOWER(A2),1)>0)+(FIND(«замок»,LOWER(A2),1)>0)=2,»10 янтарный замок»,»»)Сюда​ не умеет использовать​ таблицу:​ и буквенная комбинация,​ буквенной или числовой​ использовать подстановочные знаки.​ =ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК(СИМВОЛ(32);A2)) — имя.​
​ любой последовательности знаков.​ ‘вытаскиваем из словаря​ ActiveSheet.UsedRange.Rows.Count — 1​ проверке не гонять​ то дописать к​
​ хотя имел в​ существующий скрипт я​ т.к. у меня​

​ А листа «отчет»​​ Код =ИНДЕКС(Лист1!$C$1:$C$99;ПОИСКПОЗ(ЛОЖЬ;ЕНД(ПОИСКПОЗ(«*»&Лист1!$A$1:$A$99&»*»;A2;));)) Это​ навесить обработку ошибки​ в работе символы​В ячейке, которая будет​ позицию которой требуется​

​ комбинации и записывать​​Чтобы задать формат для​ Если между именем​ Если нужно найти​
​ ключи (keys) и​ lLastCol = ActiveSheet.UsedRange.Column​ одно и тоже​ существующей строке «имя​ виду слова. Например,​

​ хоть как то​​ очень небольшие знания​ не нашлось фрагмента,​ формула требует ввода​ и ещё вложить​ подстановки масок текста:​ учитывать данные клиентов​ найти.​ ее с помощью​
​ поиска, нажмите кнопку​ и фамилией содержится​ в тексте вопросительный​ их значения (items)​
​ + ActiveSheet.UsedRange.Columns.Count -​ слово несколько раз.​ листа + адрес»​ добавьте в список​

​ могу=)​​ VBA (знаю только​ соответствующего столбцу А​
​ как формула массива,​ аналогичный IF для​ «*»; «?»; «~».​ без телефона, введем​Анализируемый текст. Это тот​
​ чисел.​
​Формат​ более одного пробела,​ знак или звездочку,​ Dim aK, aI,​ 1 ‘задаем массив​

​7. это нужно​​ sh.Name & «(«​ «1. что искать.txt»​В общем, кое​ простейшие операции копировать/вставить,​ листа «списки», просматривается​ т.е. нажатием Ctrl+Shift+Enter,​ казачков.​
​Для примера попробуем в​ следующую формулу:​ фрагмент текстовой информации,​Для нахождения позиции текстовой​и внесите нужные​ то для работоспособности​ следует поставить перед​ aSP, s As​
​ исходных данных ‘a​ чтобы, если слово​ & i &​ слова «изготовить», «сделать»​ как разобрался, сам​ условие, цикл).​ столбец В, если​

​ и отображается в​​Ну или с​

​ этих же исходных​​=ПОИСК(“, тел.”;адрес_анализируемой_ячейки).​
​ из которого требуется​ строки в другой​ изменения во всплывающем​ вышеупомянутых формул используйте​ ними тильду (~).​ String, ss As​ = [a1].CurrentRegion.Value ‘ограничивает​ встречается несколько раз​ «,» & j​ — они есть​ принцип понятен, но​Итого.​ не находится и​ фигурных скобках.​ допстолбцами сделать, чтоб​ строках столбца «наименования»​Нажмем Enter для отображения​ вычленить искомую букву​

​ аналогичной применяют ПОИСК​​ окне​

​ функцию СЖПРОБЕЛЫ().​​Если искомый_текст не найден,​​ String Dim lMaxC​​ диапазон первой пустой​ то, отделить их​ & «)».​

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

​ и ПОИСКБ. Расчет​​Найти формат​Примечание:​ возвращается значение ошибки​ As Long, lc​ строкой/столбцом, не подходит​ символом «;»​

​Т.е. все вроде​ в таблице «2.​
​ нашел ошибки в​Список слов (фраз),​ столбец С. Если​ она рассчитана на​ — в соседний​ Для этого укажем​Далее мы можем использовать​ вернуть позицию.​ ведется с первого​.​Мы стараемся как​ #ЗНАЧ!​ As Long aK​ a = Range(Cells(1,​5. А почему​ понятно, кроме строки​ искать тут.xlsx», но​ работе скрипта.​ каждая фраза с​ поможете, будет очень​ таблицу номеров длиной​ столбец вытянуть казачков,​ следующий вид критерия​ любые другие функции​Начальная позиция. Данный фрагмент​ символа анализируемой ячейки.​
​Кнопка​ можно оперативнее обеспечивать​Функция ПОИСК() не учитывает​ = .keys aI​ 1), Cells(lLastRow, lLastCol)).Value​ нет, Словарь мы​ IIf(.Item(t) = «»,​ сейчас их не​Найденные ошибки:1. Скрипт работает​ новой строки​ здорово!! Файл приложилаДобрый​ до 99 записей.​ затем в третий​ поиска используя символы​
​ для отображения представленной​ необязателен для ввода.​ Так, если задать​Параметры​ вас актуальными справочными​ РЕгиСТР букв. Для​ = .items ReDim​ ActiveWorkbook.Close False ‘создаем​ уже создали, взяли​
​ «», «;»)​ находит.​ только в одном,​На выходе:​ день!​ При необходимости поменяйте​ собрать то, что​ подстановки: «н*ая».​

CyberForum.ru

Расширение стандартного поиска. Как искать списки слов в Excel?

​ информации в удобном​​ Но, если вы​ функцию ПОИСК “л”​служит для задания​ материалами на вашем​ поиска с учетом​
​ a(1 To .Count,​ словарь с исходными​ все что нам​8. Вы не​Я попробовал изменить​ текущем листе. Разве​1. Таблица или​Во-первых, спасибо за​ 99 на другое​ без ошибок.​
​Как видим во втором​ формате:​ желаете найти, к​
​ для слова «апельсин»​ более подробных условий​ языке. Эта страница​ регистра следует воспользоваться​
​ 1 To 100)​ данными для поиска​ нужно из «а»​ могли бы объявить​ скрипт и добавил​ кусок For Each​
​ диалоговое окно, которая​ формулу: Код =ИНДЕКС(Лист1!$C$1:$C$99;ПОИСКПОЗ(ЛОЖЬ;ЕНД(ПОИСКПОЗ(«*»&Лист1!$A$1:$A$99&»*»;A25;));))​ число.​Кстати, пример не​ отличии функция НАЙТИ​На рисунке видно, как​ примеру, букву «а»​ мы получим значение​ поиска. Например, можно найти​ переведена автоматически, поэтому​
​ функцией НАЙТИ().​
​ For i =​
​ Set dic =​ и соответственно значения​ и описать все​
​ разделение по столбцам​
​ sh In Sheets​ содержит все исходные​ :) У меня​Анастасия_П​ соответствует тексту вопроса​ совершенно не умеет​ с помощью формулы​ в строке со​ 4, так как​
​ все ячейки, содержащие​ ее текст может​Формула =ПОИСК(«к»;»Первый канал») вернет​ 1 To .Count​ CreateObject(«scripting.dictionary») dic.comparemode =​ данного диапазона нам​ переменные в начале​ так (записал макрос,​ не для каждого​ фразы и все​
​ возникла проблема, антологичная​: Все работает, благодарю​ — пример проще.​ работать и распознавать​ из двух функций​
​ значением «А015487.Мужская одежда»,​

​ именно такой по​​ данных определенного типа,​ содержать неточности и​
​ 8, т.к. буква​ a(i, 1) =​ 1 With dic​ уже не нужны,​ скрипта, т.к. не​ по другому пока​ листа должен работать?​ найденные ядреса ячеек.​ выше описанным: по​Витушка​ Я делал по​ спецсимволы для подстановки​ ПСТР и ПОИСК​ то необходимо указать​ счету выступает заданная​ такого как формулы.​ грамматические ошибки. Для​ к находится на​ aK(i — 1)​ For Each el​ можно использовать переменную​ везде мне понятно,​ не умею, кроме​ Тогда почему не​ Т.е. эквивалент стандартного​ фрагменту текста найти​: Доброго всем вечера!​ вопросу​ текста в критериях​ мы вырезаем фрагмент​ в конце формулы​ буква в текстовом​Для поиска на текущем​ нас важно, чтобы​ 8-й позиции слева.​

​ s = .Item((aK(i​​ In a If​ «а» дальше.​ что переменная, а​ простейших циклов и​
​ работает?​ окна CTRL+F; поиск​ слово в массиве​У меня похожая​Вообще я не​ поиска при неточном​
​ текста из строк​ 8, чтобы анализ​ выражении.​ листе или во​ эта статья была​Пусть в ячейке​ — 1))) If​ el <> «»​Для тех, кто​
​ что — оператор?​ If-Then):​2. Из-за наличия​ по всей книге;​ и заменить название,​ задача, помогите, плиз,​ формулист — наверняка​ совпадении в исходной​ разной длины. Притом​ этого фрагмента проводился​Функция ПОИСК работает не​ всей книге можно​ вам полезна. Просим​А2​ s <> «»​ Then .Item(el) =​ зайдет из поисковых​Еще раз благодарю​Selection.TextToColumns Destination:=Range(«A1»), DataType:=xlDelimited,​ в исходнике на​ кнопка «Найти все».​ на то, которое​ написать формулу для​ есть решение проще.​ строке.​ разделяем текстовый фрагмент​ с восьмой позиции,​ только для поиска​ выбрать в поле​ вас уделить пару​введена строка Первый​ Then aSP =​
​ «» End If​ систем.​ за помощь.​ _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True,​ листах пустых строк​2. Эта таблица​ требуется по справочнику.​ следующих условий. Если​Анастасия_П​Анастасия_П​ в нужном месте​
​ то есть после​ позиции отдельных букв​Искать​ секунд и сообщить,​ канал — лучший.​ Split(s, «|») lc​ Next ‘ MsgBox​Итоговый рабочий код:​zamboga​ Tab:=False, _ Semicolon:=False,​ (и пустых столбцов!)​ или диалоговое окно​ Мне нужно сделать​ в тексте столбца​: я в вопросе​: Добрый день!​ так, чтобы отделить​ артикула. Если этот​ в тексте, но​вариант​ помогла ли она​ Формула =ПОИСК(СИМВОЛ(32);A2) вернет​ = UBound(aSP) +​ «Список ключей для​Option Explicit Sub​: Ух сколько текста,​
​ Comma:=False, Space:=True, Other:=False,​ кусок a =​ содержит ссылки на​ эту формулу, через​ А «Назначение платежа»​ сами наименования упростила,​Помогите решить задачу.​ ее от номера​
​ аргумент не указан,​ и для целой​Лист​ вам, с помощью​ 7, т.к. символ​ 1 If lMaxC​ поиска:» & vbLf​ pr3() Dim sh​ не осилил…​ FieldInfo _ :=Array(1,​ [a1].CurrentRegion.Value не верно​ ячейки, где встретились​ ЕСЛИОШИБКА. Тоже есть​ листа «отчет» содержится​ а в идеале​ Дана таблица. В​ телефона.​ то он по​ комбинации. Например, задав​или​ кнопок внизу страницы.​
​ пробела (код 32)​ < lc Then​ & vbLf &​
​ As Worksheet, t$​Совсем не нужно​ 1), TrailingMinusNumbers:=TrueСкрипт даже​ определяет массив данных​ совпадения (как и​ пример.​ слово из столбца​ они как в​ первом столбце наименования,​Пример 2. Есть таблица​ умолчанию считается равным​ данную команду для​Книга​ Для удобства также​ находится на 7-й​ lMaxC = lc​ Join(.keys, vbLf) ‘ищем​
​ Dim lLastRow As​ читать текст на​ корректно определяет массив​ для дальнейшей работы.​
​ окно стандартного поиска,​НО! Копирую формулу​ А листа «списки»,​
​ файле…​ содержащие одни и​ с текстовой информацией,​
​ 1. При указании​ слов «book», «notebook»,​.​ приводим ссылку на​ позиции.​ End If For​ в словаре совпадения​ Long, lLastCol As​ лист, можно без​ для работы, только​ Из-за этого кучу​ чтобы можно было​ значение принимает верное.​ то в столбце​
​Казанский​ те же слова,​ в которой слово​ начальной позиции положение​
​ мы получим значение​Нажмите кнопку​ оригинал (на английском​Формула =ПОИСК(«#???#»;»Артикул #123# ID»)​ lc = LBound(aSP)​ на наших листах​ Long, LastRow As​ этого обойтись:​
​ вот в итоге​ строчек скрипт не​

​ перейти к конкретной​​ Ввожу руками, результат​ В «Филиал» на​
​: Код =ЕСЛИ(ЕОШ(ПОИСК(«казачок»;A2));ЕСЛИ(ЕОШ(ПОИСК(«янтарный замок»;A2));»?»;»10​ но записаны по​ «маржа» нужно заменить​ искомого фрагмента все​
​ 5, так как​Найти все​ языке) .​ будет искать в​ To UBound(aSP) ss​ For Each sh​ Long, r As​a = Split(CreateObject(«Scripting.FileSystemObject»).Getfile(ActiveWorkbook.Path​

​ ничего не находит.​​ проверяет. Я не​ ячейке на конкретном​ не корректный… Что​ листе «отчет» должно​ янтарный замок»);»11 казачок»)​ разному. Например: «коньяк​ на «объем».​ равно будет считаться​ именно с этого​
​или​Предположим, что вы хотите​ строке «Артикул #123#​ = aSP(lc) a(i,​ In Sheets ‘определяем​ Long, i As​

​ & «1. Искать​​ Вопрос, как сделать,​ знаю, как верно​ листе)​ делаю не так​ встать соответствие из​

​ В примере работает.​​ Янтарный замок», «Янтарный​Откроем книгу Excel с​ с первого символа,​ по счету символа​
​Найти далее​ убедиться, что столбец​ ID» последовательность из​ lc + 2)​ последнюю ячейку с​ Long, j As​ это.txt»).OpenasTextStream(1).ReadAll, vbNewLine)И не​
​ чтобы скрипт искал​ задать весь диапазон​

​3. Для слов​​ не понятно. Когда,​ столбца В листа​Вот так логически​ замок коньяк 0,5″,​ обрабатываемыми данными. Пропишем​ даже если начальные​ начинается искомое слово​
​.​ содержит текст, не​ 5 символов, которая​ = ss Next​ данными With sh.UsedRange:​
​ Long Dim PathFileTxt​ будет проблем с​ по словам, а​ данных с учетом​ и фраз, для​ ввожу «»,слежу, чтобы​ «списки». Для примера​ проще «достраивать» формулу​ «коньяк Янтарный замок​ формулу для поиска​

​ 8 были пропущены​ «book».​Найти все​
​ номера. Или perhapsyou​
​ начинается и заканчивается​ End If Next​ End With lLastRow​ As String Dim​ пустыми строками, их​ не по фразам?​ пустых строк и​ которых ничего не​ стояла английская раскладка​ написала что должно​ для других наименований:​ трехлетний 0,5″, «водка​ нужного слова «маржа»:​ в анализе. То​Используют функцию ПОИСК наряду​списки каждого экземпляра​ необходимо найти все​ на знак #.​ ‘создаем новую книгу​ = sh.UsedRange.Row +​ dic As Object​ правда есть смысл​ (разделитель — пробел.​ пустых столбцов кроме​ найдено, выводится «не​ на клавиатуре.​ получиться. Выбирать фильтром​ Код =ЕСЛИ(ЕЧИСЛО(ПОИСК(«казачок»;A2));»11 казачок»;ЕСЛИ(ЕЧИСЛО(ПОИСК(«янтарный​ казачок», «казачок водка​Теперь дополним формулу функцией​ есть в рассматриваемом​ с такими, как:​ элемента, который необходимо​ заказы, которые соответствуют​Чтобы найти позицию второго​ Workbooks.Add ‘вставляем данные​ sh.UsedRange.Rows.Count — 1​ Dim el As​ отсеивать при переборе​ Другие символы, типа​ как Cells.Select, и​ найдено».​Очень хочется понять​ очень долго(​ замок»;A2));»10 янтарный замок»;»?»))​ 0,7л». Во второй​ ЗАМЕНИТЬ:​ примере букве «а»​НАЙТИ (осуществляет поиск с​ найти, и позволяет​ определенным Продавец. Если​ вхождения буквы «а»​ на лист ActiveSheet.[a1].Resize(.Count,​ lLastCol = sh.UsedRange.Column​ Variant Dim a​ массива (с нуля!)​ «/», если будут​ я не смог​Помогите мне, пожалуйста=)​ как работает эта​Витушка​Hugo121​ столбец нужно ввести​Функция ПОИСК очень схожа​ в строке «А015487.Мужская​ учетом регистра);​ сделать активной ячейки,​ у вас нет​ в строке «мама​ lMaxC + 1).FormulaLocal​ + sh.UsedRange.Columns.Count -​ Windows(«искать тут.xlsm»).Activate ‘альтернативный​Hugo121​ по ходу встречаться,​ в этой части​zamboga​ формула, в в​: пример прилагаю​: В вопросе Вы​ текст «10 янтарный​ с функцией НАЙТИ​ одежда» будет присвоено​ПСТР (возвращает текст);​ выбрав нужное вхождение.​ проблемой верхний или​ мыла раму» используйте​ = a Columns(«B:XFD»).EntireColumn.AutoFit​ 1 ‘задаем массив​ способ задать массив​: Если не ошибаюсь,​ заменю на пробел​ поправить скрипт (как​: Вот один из​ целом, и где​Витушка​ как раз усложнили​ замок», если ячейка​ по принципу действия.​ значение 14.​ЗАМЕНИТЬ (заменяет символы).​ Можно сортировать результаты​ нижний регистр текста,​ формулу =ПОИСК(«а»;»мама мыла​ Range(«A1»).Activate Application.ScreenUpdating =​ a = sh.Range(sh.Cells(1,​ без открытия файла.​ то если отбросить​ сам, такой код​ я понимаю, «Cells.Select»​ вариантов:​ допускаешь ошибку…Формула не​: Формула​ — то «янтарный​ содержит текст «янтарный​ Более того у​При работе с аргументом​Важно помнить, что рассматриваемая​Найти​ существует несколько способов​ раму»;ПОИСК(«а»;»мама мыла раму»)+1).​ True ‘ MsgBox​ 1), sh.Cells(lLastRow, lLastCol)).Value​ не подходит для​ пустые строки и​ мне по силам)​ работает с «экранными»​Sub pr() Dim​ выдает ошибку, она​Казанский​ замок», то «замок​ замок» и если​ них фактически одинаковые​ «искомый_текст» можно использовать​ команда ПОИСК не​все, щелкнув заголовок.​ проверки, если ячейка​ Чтобы определить есть​ «Done!» ‘ ActiveWorkbook.Close​ ‘a = [a1].CurrentRegion.Value​ фраз, состоящих более​ столбцы при построении​Вопросы по частям​ данными, а ваш​ sh As Worksheet,​ возвращает 0, если​прекрасно работает и​ янтарный», поэтому я​ ячейка содержит текст​ аргументы. Только лишь​ следующие подстановочные знаки.​ учитывает регистра. Если​Примечание:​ содержит текст.​ ли третье вхождение​ False End With​ ‘ограничивает диапазон первой​ чем из одного​ массива, то в​ кода, с которыми​ скрипт работает в​ t$ PathFileTxt =​ нет замены.​ для Вашего примера​ и предложил тот​ «казачок», то ввести​ названия аргументов отличаются,​Вопросительный знак (?). Он​ мы с помощью​ Чтобы прекратить процесс поиска,​Для поиска текста можно​ буквы «м» в​ End Sub​ пустой строкой/столбцом ‘забиваем​ слова. ‘a =​ итоге не получится​

CyberForum.ru

​ ничего не понятно.​

Хитрости »

4 Январь 2016              119590 просмотров


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

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

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

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

=ПРОСМОТР(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)

если артикул не найден в каталоге.
Прежде чем облагородить эту формулу всякими дополнениями(вроде виде убирания ненужных

#Н/Д(#N/A)

) давайте разберемся как она работает.
Кратко о принципе работы функция

ПРОСМОТР(LOOKUP)

: она берет значение, заданное первым аргументом и ищет его в массиве(диапазоне) из второго аргумента. Как только находит — запоминает его позицию(строку, если угодно) и в итоге возвращает значение, расположенное в этой же позиции в массиве третьего аргумента.
Но у функции есть пара особенностей:

  1. Она ищет не обязательно именно точное совпадение с искомым, а максимально приближенное к нему. Если точнее — равное или большее искомому.
  2. Функция ПРОСМОТР(LOOKUP) старается преобразовать непосредственно в массив любое выражение, записанное вторым аргументом.
  3. Этими особенностями мы и будем пользоваться.

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

  1. =ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$A$2:$A$11)
  2. =ПРОСМОТР(2;
    1/{55:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!};
    Каталог!$A$2:$A$11)
  3. =ПРОСМОТР(2;{0,0181818181818182:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!};Каталог!$A$2:$A$11)
  4. =ПРОСМОТР(2;
    1;
    {«FM2-3320″:»CV455689″:»Q5949X»:»CE321A»:»CE322A»:»CE323A»:»00064073″:»CX292708″:»CX292709″:»CX292710″})
  5. =»FM2-3320″

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

Реализация 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.

Так же см.:
Сравнение текста по части предложения
Что такое формула массива
Как найти значение в другой таблице или сила ВПР
ВПР с поиском по нескольким листам


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

  Плейлист   Видеоуроки


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



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика


Функция

ПОИСК(

)

, английский вариант SEARCH(),

находит первое вхождение одной текстовой строки в другой строке и возвращает начальную позицию найденной строки.

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


ПОИСК

(

искомый_текст

;

просматриваемая_строка

;[нач_позиция])


Искомый_текст

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


Просматриваемая_строка

— текст, в которой ищется

Искомый_текст

.


Нач_позиция

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

нач_позиция

опущен, то предполагается значение 1.

В аргументе

искомый_текст

можно использовать

подстановочные знаки

— вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку; звездочка — любой последовательности знаков. Если нужно найти в тексте вопросительный знак или звездочку, следует поставить перед ними тильду (~).

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

Функция

ПОИСК()

не учитывает РЕгиСТР букв. Для поиска с учетом регистра следует воспользоваться функцией

НАЙТИ()

.

Примеры

Формула

=ПОИСК(«к»;»Первый канал»)

вернет 8, т.к. буква

к

находится на 8-й позиции слева.

Пусть в ячейке

А2

введена строка

Первый канал — лучший

. Формула

=ПОИСК(СИМВОЛ(32);A2)

вернет 7, т.к. символ пробела (код 32) находится на 7-й позиции.

Формула

=ПОИСК(«#???#»;»Артикул #123# ID»)

будет искать в строке »

Артикул #123# ID

» последовательность из 5 символов, которая начинается и заканчивается на знак #.

Чтобы найти позицию второго вхождения буквы «а» в строке «мама мыла раму» используйте формулу

=ПОИСК(«а»;»мама мыла раму»;ПОИСК(«а»;»мама мыла раму»)+1).

Чтобы определить есть ли третье вхождение буквы «м» в строке «мама мыла раму» используйте формулу

=ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(«мама мыла раму»;»м»;»»;3))=ДЛСТР(«мама мыла раму»);»Нет третьего вхождения м»;»Есть третье вхождение м»)

Формула

=ПОИСК(«клад?»;»докладная»)

вернет 3, т.е. в слове «докладная» содержится слово из 5 букв, первые 4 из которых

клад

(начиная с третьей буквы слова

докладная

).

Функция

НАЙТИ()

vs

ПОИСК()

Функция

НАЙТИ()

учитывает РЕгиСТР букв и не допускает использование подстановочных знаков. Для поиска без учета регистра, а также для поиска с использованием

подстановочных знаков

пользуйтесь функцией

ПОИСК()

.

Связь с функциями

ЛЕВСИМВ()

,

ПРАВСИМВ()

и

ПСТР()

Функция

ПОИСК()

может быть использована совместно с функциями

ЛЕВСИМВ()

,

ПРАВСИМВ()

и

ПСТР()

.

Например, в ячейке

А2

содержится фамилия и имя «Иванов Иван», то формула

=ЛЕВСИМВ(A2;ПОИСК(СИМВОЛ(32);A2)-1)

извлечет фамилию, а

=ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК(СИМВОЛ(32);A2))

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

СЖПРОБЕЛЫ()

.

Поиск ключевых слов в тексте

Поиск ключевых слов в исходном тексте — одна из очень распространенных задач при работе с данными. Давайте рассмотрим её решение несколькими способами на следующем примере:

Постановка задачи

Предположим, что у нас с вами есть список ключевых слов — названия автомобильных марок — и большая таблица всевозможных запчастей, где в описаниях иногда могут встречаться один или сразу несколько таких брендов, если запчасть подходит больше, чем к одной марке автомобиля. Наша задача состоит в том, чтобы найти и вывести все обнаруженные ключевые слова в соседние ячейки через заданный символ-разделитель (например, запятую).

Способ 1. Power Query

Само-собой, сначала превращаем наши таблицы в динамические («умные») с помощью сочетания клавиш Ctrl+T или команды Главная — Форматировать как таблицу (Home — Format as Table), даём им имена (например Марки и Запчасти) и загружаем по очереди в редактор Power Query, выбрав на вкладке Данные — Из таблицы/диапазона (Data — From Table/Range). Если у вас старые версии Excel 2010-2013, где Power Query установлена как отдельная надстройка, то нужная кнопка будет на вкладке Power Query. Если у вас совсем новая версия Excel 365, то кнопка Из таблицы/диапазона называется там теперь С листа (From Sheet).

После загрузки каждой таблицы в Power Query возвращаемся обратно в Excel командой Главная — Закрыть и загрузить — Закрыть и загрузить в… — Только создать подключение (Home — Close & Load — Close & Load to… — Only create connection).

Теперь создадим дубликат запроса Запчасти, щёлкнув по нему правой кнопкой мыши и выбрав команду Дублировать запрос (Duplicate query), затем переименуем получившийся запрос-копию в Результаты и дальше будем работать уже с ним.

Логика действий следующая:

  1. На вкладке Добавление столбца выбираем команду Настраиваемый столбец (Add column — Custom column) и вводим формулу =Марки. После нажатия на ОК получим новый столбец, где в каждой ячейке будет вложенная таблица со списком наших ключевых слов — марок автопроизводителей:

    Добавляем столбец с марками

  2. Кнопкой с двойными стрелками в шапке добавленного столбца разворачиваем все вложенные таблицы. Строки с описаниями запчастей при этом размножатся кратно количеству марок, и мы получим все возможные пары-сочетания «запчасть-марка»:

    Развернутые таблицы

  3. На вкладке Добавление столбца выбираем команду Условный столбец (Conditional column) и задаём условие на проверку вхождения ключевого слова (марки) в исходный текст (описание запчасти):

    Проверяем вхождение марки в описание

  4. Чтобы поиск был регистроНЕчувствительный, добавляем вручную в строке формул третий аргумент Comparer.OrdinalIgnoreCase к функции проверки вхождения Text.Contains (если строки формул не видно, то её можно включить на вкладке Просмотр):

    Избавляемся от регистрочувствительности в поиске

  5. Фильтруем получившуюся таблицу, оставляя только единички в последнем столбце, т.е. совпадения и удаляем ненужный больше столбец Вхождения.
  6. Группируем одинаковые описания командой Группировать по на вкладке Преобразование (Transform — Group by). В качестве агрегирующей операции выбираем Все строки (All rows). На выходе получаем столбец с таблицами, куда собраны все подробности по каждой запчасти, включая необходимые нам марки автопроизводителей:

    Сгруппированные описания

  7. Чтобы извлечь марки для каждой запчасти, добавляем еще один вычисляемый столбец на вкладке Добавление столбца — Настраиваемый столбец (Add column — Custom column) и используем формулу, состоящую из таблицы (они у нас располагаются в столбце Подробности) и имени извлекаемого столбца:

    Вытаскиваем столбец с марками

  8. Щёлкаем по кнопке с двойными стрелками в шапке получившегося столбца и выбираем команду Извлечь значения (Extract values), чтобы вывести марки через любой желаемый символ-разделитель:

    Выводим все марки через запятую

  9. Удаляем ненужный больше столбец Подробности.
  10. Чтобы добавить к получившейся таблице исчезнувшие из неё запчасти, где в описаниях не было найдено ни одной марки — выполним процедуру объединения запроса Результат с исходным запросом Запчасти кнопкой Объединить на вкладке Главная (Home — Merge queries). Тип соединения — Внешнее соединение справа (Right outer join):

    Объединяем запросы Результаты и Запчасти

  11. Останется удалить лишние столбцы и переименовать-переместить оставшиеся — и наша задача решена:

    Результаты

Способ 2. Формулы

Если у вас версия Excel 2016 или новее, то нашу проблему можно весьма компактно и изящно решить с помощью новой функции ОБЪЕДИНИТЬ (TEXTJOIN):

Поиск и извлечение ключевых слов формулой

Логика работы этой формулы проста:

  • Функция ПОИСК (FIND) ищет вхождение по очереди каждой марки в текущее описание запчасти и выдаёт либо порядковый номер символа, начиная с которого марка была найдена, либо ошибку #ЗНАЧ! если марки в описании нет.
  • Затем при помощи функции ЕСЛИ (IF) и ЕОШИБКА (ISERROR) мы заменяем ошибки на пустую текстовую строку «», а порядковые номера символов — на сами названия марок.
  • Полученный массив из пустых ячеек и найденных марок собирается в единую строку через заданный символ-разделитель с помощью функции ОБЪЕДИНИТЬ (TEXTJOIN).

Сравнение быстродействия и буферизация запроса Power Query для ускорения

Для тестирования быстродействия возьмем в качестве исходных данных таблицу из 100 000 описаний запчастей. На ней получаем следующие результаты:

  • Время пересчета формулами (Способ 2) — 9 сек. при первом копировании формулы на весь столбец и 2 сек. при повторном (сказывается буферизация, видимо).
  • Время обновления запроса Power Query (Способ 1) гораздо хуже — 110 сек.

Само-собой, многое зависит от «железа» отдельно взятого ПК и установленной версии Office и обновлений, но общая картина, думаю, понятна.

Для ускорения запроса Power Query давайте буферизуем таблицу-справочник Марки, т.к. она у нас не меняется в процессе выполнения запроса и постоянно пересчитывать её (как это де-факто делает Power Query) не нужно. Для этого используем функцию Table.Buffer из встроенного в Power Query языка М.

Для этого откроем запрос Результаты и на вкладке Просмотр нажмём на кнопку Расширенный редактор (View — Advanced Editor). В открывшемся окне добавим строку с новой переменной Марки2, которая будет буферизованной версией нашего справочника автопроизводителей и используем эту новую переменную далее в следующей команде запроса:

Буферизуем справочник в запросе Power Query

После такой доработки скорость обновления нашего запроса возрастает почти в 7 раз — до 15 сек. Совсем другое дело :)

Ссылки по теме

  • Нечёткий текстовый поиск в Power Query
  • Массовая замена текста формулами
  • Массовая замена текста в Power Query функцией List.Accumulate

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

Примеры использования функции ПОИСК в Excel

Для нахождения позиции текстовой строки в другой аналогичной применяют ПОИСК и ПОИСКБ. Расчет ведется с первого символа анализируемой ячейки. Так, если задать функцию ПОИСК “л” для слова «апельсин» мы получим значение 4, так как именно такой по счету выступает заданная буква в текстовом выражении.

Функция ПОИСК работает не только для поиска позиции отдельных букв в тексте, но и для целой комбинации. Например, задав данную команду для слов «book», «notebook», мы получим значение 5, так как именно с этого по счету символа начинается искомое слово «book».

Используют функцию ПОИСК наряду с такими, как:

  • НАЙТИ (осуществляет поиск с учетом регистра);
  • ПСТР (возвращает текст);
  • ЗАМЕНИТЬ (заменяет символы).

Важно помнить, что рассматриваемая команда ПОИСК не учитывает регистра. Если мы с помощью нее станем искать положение буквы «а» в слове «Александр», в ячейке появится выражение 1, так как это первый символ в анализируемой информации. При задании команды НАЙТИ «а» в том же отрезке текста, мы получим значение 6, так как именно 6 позицию занимает строчная «а» в слове «Александр».

Кроме того, функция ПОИСК работает не для всех языков. От команды ПОИСКБ она отличается тем, что на каждый символ отсчитывает по 1 байту, в то время как ПОИСКБ — по два.

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

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

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

  1. Искомый текст. Это числовая и буквенная комбинация, позицию которой требуется найти.
  2. Анализируемый текст. Это тот фрагмент текстовой информации, из которого требуется вычленить искомую букву или сочетание и вернуть позицию.
  3. Начальная позиция. Данный фрагмент необязателен для ввода. Но, если вы желаете найти, к примеру, букву «а» в строке со значением «А015487.Мужская одежда», то необходимо указать в конце формулы 8, чтобы анализ этого фрагмента проводился с восьмой позиции, то есть после артикула. Если этот аргумент не указан, то он по умолчанию считается равным 1. При указании начальной позиции положение искомого фрагмента все равно будет считаться с первого символа, даже если начальные 8 были пропущены в анализе. То есть в рассматриваемом примере букве «а» в строке «А015487.Мужская одежда» будет присвоено значение 14.

При работе с аргументом «искомый_текст» можно использовать следующие подстановочные знаки.

  1. Вопросительный знак (?). Он будет соответствовать любому знаку.
  2. Звездочка (*). Этот символ будет соответствовать любой комбинации знаков.

Если же требуется найти подобные символы в строке, то в аргументе «искомый_текст» перед ними нужно поставить тильду (~).

Если искомый текст не был найден приложением или начальная позиция установлена меньше 0, больше общего количества присутствующих символов, в ячейке отобразиться ошибка #ЗНАЧ.

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



Пример использования функции ПОИСК и ПСТР

Пример 1. Есть набор текстовой информации с контактными данными клиентов и их именами. Информация записана в разных форматах. Необходимо найти, с какого символа начинается номер телефона.

Введем исходные данные в таблицу:

исходные данные в таблицу.

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

=ПОИСК(“, тел.”;адрес_анализируемой_ячейки).

Нажмем Enter для отображения искомой информации:

адрес_анализируемой_ячейки.

Далее мы можем использовать любые другие функции для отображения представленной информации в удобном формате:

ПСТР.

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

Пример формулы ПОИСК и ЗАМЕНИТЬ

Пример 2. Есть таблица с текстовой информацией, в которой слово «маржа» нужно заменить на «объем».

Откроем книгу Excel с обрабатываемыми данными. Пропишем формулу для поиска нужного слова «маржа»:

ПОИСК.

Теперь дополним формулу функцией ЗАМЕНИТЬ:

ЗАМЕНИТЬ.

Чем отличается функция ПОИСК от функции НАЙТИ в Excel?

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

аргументы ПОИСК и НАЙТИ.

Но опытный пользователь Excel знает, что отличие у этих двух функций очень существенные.

Отличие №1. Чувствительность к верхнему и нижнему регистру (большие и маленькие буквы). Функция НАЙТИ чувствительна к регистру символов. Например, есть список номенклатурных единиц с артикулом. Необходимо найти позицию маленькой буквы «о».

найти позицию маленькой буквы.

Теперь смотрите как ведут себя по-разному эти две функции при поиске большой буквы «О» в критериях поиска:

при поиске большой буквы.

Отличие №2. В первом аргументе «Искомый_текст» для функции ПОИСК мы можем использовать символы подстановки для указания не точного, а приблизительного значения, которое должно содержаться в исходной текстовой строке. Вторая функция НАЙТИ не умеет использовать в работе символы подстановки масок текста: «*»; «?»; «~».

Для примера попробуем в этих же исходных строках столбца «наименования» найти приблизительный текст. Для этого укажем следующий вид критерия поиска используя символы подстановки: «н*ая».

спецсимволы для подстановки текста.

Скачать примеры функций ПОИСК и НАЙТИ в Excel

Как видим во втором отличии функция НАЙТИ совершенно не умеет работать и распознавать спецсимволы для подстановки текста в критериях поиска при неточном совпадении в исходной строке.

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

Содержание

  1. Что возвращает функция
  2. Синтаксис
  3. Аргументы функции
  4. Дополнительная информация
  5. Примеры использования функции ПОИСК в Excel
  6. Пример 1. Ищем слово внутри текстовой строки (с начала)
  7. Пример 2. Ищем слово внутри текстовой строки (с указанием стартовой позиции поиска)
  8. Пример 3. Поиск слова при наличии нескольких совпадений в тексте
  9. Пример 4. Используем подстановочные знаки при работе функции ПОИСК в Excel

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

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

Синтаксис

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

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

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

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

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

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

Примеры использования функции ПОИСК в Excel

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

Функция ПОИСК в Excel

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

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

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

Telegram Logo Больше лайфхаков в нашем Telegram Подписаться

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

Функция ПОИСК в Excel

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

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

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

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

Функция ПОИСК в Excel

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

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

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

Функция ПОИСК в Excel

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

Способ 1

Самый простой способ — выполнить поиск. Для этого можно нажать клавиатурную комбинацию CTRL + F (от англ. Find), откроется окно поиска слов.

Для нажатия клавиатурной комбинации, нажмите клавишу клавиатуры CTRL и, удерживая ее, нажмите клавишу F (на английский язык переходить не нужно).

Вместо клавиатурной комбинации можно использовать кнопку поиска на панели Главная — Найти и выделить — Найти.

По умолчанию открывается маленькое окно, в которое нужно вписать искомое слово и нажать клавишу Найти все или Найти далее.

Поиск в Excel

  • Найти все — выполнит поиск всех совпадений с указанной фразой. В окне ниже появится список, в котором будет указана фраза, содержащая искомые символы, а также место в документе, где символы были найдены.

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

Также можно сделать шире столбцы: Книга, Лист, Имя и т.д., потянув за маркеры между названиями столбцов.

В столбце Значение можно видеть полный текст ячейки, в котором есть искомые символы (в нашем примере — excel). Чтобы перейти к этому месту в таблице просто нажмите левой кнопкой мыши на нужную строку, и курсор автоматически переместится в выбранную ячейку таблицы.

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

Дополнительные параметры поиска слов и фраз

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

Здесь можно указать дополнительные параметры поиска.

Искать:

  • на листе — только на текущем листе;
  • в книге — искать во всем документе Excel, если он состоит из нескольких листов.

Просматривать:

  • по строкам — искомая фраза будет искаться слева направо от одной строки к другой;
  • по столбцам — искомая фраза будет искаться сверху вниз от одного столбца к другому.

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

Область поиска — определяет, где именно нужно искать совпадения:

  • в формулах;
  • в значениях ячеек (уже вычисленные по формулам значения);
  • в примечаниях, оставленных пользователями к ячейкам.

А также дополнительные параметры:

  • Учитывать регистр — означает, что заглавные и маленькие буквы будут считаться как разные.

Например, если не учитывать регистр, то по запросу «excel» будет найдены все вариации этого слова, например, Excel, EXCEL, ExCeL и т.д.

Если поставить галочку учитывать регистр, то по запросу «excel» будет найдено только такое написание слова и не будет найдено слово «Excel».

  • Ячейка целиком — галочку нужно ставить в том случае, если нужно найти те ячейки, в которых искомая фраза находится целиком и нет других символов. Например, есть таблица со множеством ячеек, содержащих различные числа. Поисковый запрос: «200». Если не ставить галочку ячейка целиком, то будут найдены все числа, содержащие 200, например: 2000, 1200, 11200 и т.д. Чтобы найти ячейки только с «200», нужно поставить галочку ячейка целиком. Тогда будут показаны только те, где точное совпадение с «200».
  • Формат… — если задать формат, то будут найдены только те ячейки, в которых есть искомый набор символов и ячейки имеют заданный формат (границы ячейки, выравнивание в ячейке и т.д.). Например, можно найти все желтые ячейки, содержащие искомые символы.

Формат для поиска можно задать самому, а можно выбрать из ячейки-образца — Выбрать формат из ячейки…

Чтобы сбросить настройки формата для поиска нужно нажать Очистить формат поиска.

Это меню вызывается, если нажать на стрелочку в правой части кнопки Формат.

Способ 2

Второй способ, который позволяет найти искомое слово в таблице Excel, не является именно поиском, но также может быть удобен для работы. Это фильтр по фразе (символам), который позволяет вывести на экране только те строки, которые содержат искомые символы.

Для этого нужно щелкнуть мышкой по любой ячейке, среди которых нужно искать, нажать на вкладке Главная — Сортировка и фильтры — Фильтр.

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

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

Результат будет таков.

Таблица до применения фильтра и таблица после применения фильтра.

Фильтрация не изменяет таблицу и не удаляет строки, она просто показывает искомые строки, скрывая не нужны. Чтобы удалить фильтр, нужно нажать на стрелочку в заголовке — Удалить фильтр с слова…

Также можно нажать на стрелочку и выбрать Текстовые фильтры — Содержит и указать искомые символы.

И далее ввести искомую фразу, например «Мюнхен».

Результат будет таков — только строки, содержащие слово «Мюнхен».

Этот фильтр сбрасывается также, как и предыдущий.

Таким образом, у пользователя есть варианты поиска слова в Excel — собственно сам поиск и фильтр.

Видеоурок по теме

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


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

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

Как искать в Excel слова, текст, ячейки и значения в таблицах

Поиск слов

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

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

как искать в экселе

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

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

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

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

как в excel найти слово

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

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

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

как найти слово в таблице в excel

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

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

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

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

как искать по словам в excel

Поиск ячеек

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

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

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

как искать в excel

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

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

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

как найти текст в excel

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

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

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

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

как искать слово в excel

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

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

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

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

Как искать в Excel слова, текст, ячейки и значения в таблицах

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

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

    Как искать в Excel слова, текст, ячейки и значения в таблицах

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

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

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

    Как искать в Excel слова, текст, ячейки и значения в таблицах

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

    Понравилась статья? Поделить с друзьями:
  • Excel поиск совпадений по части текста
  • Excel поиск слов в книге
  • Excel поиск следующего значения
  • Excel поиск скрытые ячейки
  • Excel поиск символы подстановки