ПОИСК, ПОИСКБ (функции ПОИСК, ПОИСКБ)
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 критериям вхождения слова:
- ячейка содержит слово — тогда ставим пробелы перед и после слова;
- начинается с него — пробел после;
- заканчивается на него — пробел перед ним.
Проблема заключается в том, что в Excel нельзя фильтровать сразу по 3 критериям – можно только по двум. В этой ситуации есть простой лайфхак:
- Сделать копию исходного столбца;
- Удалить все символы, кроме текста и цифр (и пробелов между ними);
- Добавить символы в конце и начале каждой ячейки столбца, например, символ “”;
- Заменить оставшиеся пробелы на этот же символ;
- После этого фильтровать по полученному столбцу уже наше слово с “” перед и после него (пример – “слово”).
Символ как раз и поможет отфильтровать целые слова.
Как вы заметили, шагов целых пять, поэтому, если вам нужно найти только одно слово один раз, лучше просто 3 раза отфильтровать. Но если нужно будет искать несколько слов, это существенно ускорит процесс.
Смотрите пример ниже:
Можно сделать иначе — добавить в начале и конце строк пробелы, но тогда при поиске и фильтрации слова перед пробелом слева и после пробела справа нужно использовать символ “*” (звездочку). Иначе Excel не учтет пробелы.
Итак, чтобы сделать поиск или фильтрацию по слову в Excel, нужно добавить символ пробела справа и слева ко всем ячейкам столбца и после этого осуществлять поиск и фильтрацию по слову вместе с пробелами перед и после него.
Поиск по слову в ячейке: формула
Идеальной функцией для формулы поиска слова будет функция ПОИСК.
Формула:
=ПОИСК(" "&"вашеСлово"&" ";" "&A1&" ")>0
где вашеСлово — искомое слово, а A1 — ячейка, в которой мы его ищем.
Однако нужно помнить, что пунктуацию нужно предварительно удалить.
Поиск по слову в Excel с помощью !SEMTools
Пожалуй, самое быстрое решение, доступное владельцам полной версии моей надстройки для Excel. Алгоритм простой — выделяем диапазон, жмем макрос, вводим слово, жмем «ОК».
Поиск по нескольким словам
Как выяснить для каждой ячейки большого диапазона, присутствует ли в ней хотя бы одно из списка слов? Да так, чтобы слово не просто содержалось внутри строки, в том числе внутри других слов, а находить именно целые слова? А если нужно найти пару сотен слов в десятках тысяч ячеек?
Найти любое слово из списка
Настройка !SEMTools с лёгкостью решает такого рода проблемы. Более того, практически вне зависимости от количества слов, распознавание их наличия происходит очень быстро даже в диапазоне из 10 000 ячеек и более.
Чтобы найти список слов диапазоне ячеек с помощью !SEMTools, нужно:
- скопировать в соседний столбец диапазон, в котором мы хотим найти список слов. Это нужно для того, чтобы не стереть исходные данные,
- вызвать макрос на панели настройки,
- выбрать список слов, которые необходимо найти,
- нажать 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 используется для совершенно показывает найденные адреса
-
In Sheets a книги, и выводит А?
«замок янтарный»? то в ячейку регистру (большие и
-
ними нужно поставить в том жеЕсли поиск. из 5 букв,Искомый_текст Application.ActiveWorkbook.FullName & «]» _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True,: Мой пример кода
-
разных данных («что на других страницах, = [a1].CurrentRegion.Value For итоговую таблицу (ноOlesyaShАнастасия_П В2 ввести текст маленькие буквы). Функция тильду (~).
отрезке текста, мы.Чтобы выполнить поиск по
-
первые 4 из — текст, который требуется & sh.Name & Tab:=False, _ Semicolon:=False, вернёт массив строк ищем» и «где хотя совпадений там i = 1
-
новом листе или: копируете формулу, вставляете: Ураааа!!! Работает!!! Спасибо-преспасибо!!! «11 казачок». НАЙТИ чувствительна кЕсли искомый текст не получим значение 6,Для выполнения этой задачи
всему листу, щелкните которых клад (начиная найти. «!»»&АДРЕС(» & i Comma:=False, Space:=True, Other:=False, исходного текста - ищем»). Не из-за нет. При этом To UBound(a) For в диалоговом окне),
-
куда надо и Всем всем всемБуду благодарна за регистру символов. Например, был найден приложением
так как именно используются функции любую ячейку. с третьей буквыПросматриваемая_строка & «;» & FieldInfo _ :=Array(1, там нет никаких этого ли ошибка
скрипт «помнит» верный j = 1 где указаны имя
Проверка ячейки на наличие в ней любого текста
сразу же -Формула не дает помощь. есть список номенклатурных
Проверка соответствия содержимого ячейки определенному тексту
или начальная позиция 6 позицию занимаетЕслиНа вкладке слова докладная). — текст, в которой
Проверка соответствия части ячейки определенному тексту
j & «);»»» 1), TrailingMinusNumbers:=True ‘удаляем ячеек и столбцов. работы скрипта? Скрин1 адрес с верного To UBound(a, 2) листа, адрес ячейки, держите зажатыми Ctrl
вносить много аргументов…КогдаIvanOK единиц с артикулом. установлена меньше 0,
support.office.com
Пример преимущества функции ПОИСК в Excel перед функцией НАЙТИ
строчная «а» в,ГлавнаяФункция НАЙТИ() учитывает РЕгиСТР ищется & sh.Name & пустые строки LastRowVlad999 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 две функции приЕсли «искомый_текст» не найден,
- команды ПОИСКБ онаПримечание:и нажмите кнопку а также для
- просматриваемой_строке, с которой .Item(t) = .Item(t) For r =Мне нужны адреса массива? исходных данных для
- «;») & sh.Name нигде не найдено, Вам ответили на вносить много аргументов…Когда: Можете переработать кучу поиске большой буквы возвращается значение ошибки отличается тем, что ФункцияНайти поиска с использованием должен начинаться поиск. & IIf(.Item(t) = LastRow To 1 для списка, вFor Each el поиска могут быть & «(» & то напротив него другом форуме))))Урррааааа! Получилось. «достраиваю» формулу, так готовых решений из «О» в критериях #ЗНАЧ. на каждый символпоиска. подстановочных знаков пользуйтесь Если аргумент «», «», «|»)
Step -1 ‘проходим котором ищем. И In a .Item(el)
- не только слова, i & «,» пишется «не найдено».
- Просто чудеса. Но и пишет, что темы Поиск и
поиска: отсчитывает по 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 Asa = 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
ничего не понятно.
ПОИСК, ПОИСКБ (функции ПОИСК, ПОИСКБ)
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
В этой статье описаны синтаксис формулы и использование функций ПОИСК и ПОИСКБ в Microsoft Excel.
Функции ПОИСК И ПОИСКБ находят одну текстовую строку в другой и возвращают начальную позицию первой текстовой строки (считая от первого символа второй текстовой строки). Например, чтобы найти позицию буквы «n» в слове «printer», можно использовать следующую функцию:
Эта функция возвращает 4, так как «н» является четвертым символом в слове «принтер».
Можно также находить слова в других словах. Например, функция
возвращает 5, так как слово «base» начинается с пятого символа слова «database». Можно использовать функции ПОИСК и ПОИСКБ для определения положения символа или текстовой строки в другой текстовой строке, а затем вернуть текст с помощью функций ПСТР и ПСТРБ или заменить его с помощью функций ЗАМЕНИТЬ и ЗАМЕНИТЬБ. Эти функции показаны в примере 1 данной статьи.
Эти функции могут быть доступны не на всех языках.
Функция ПОИСКБ отсчитывает по два байта на каждый символ, только если языком по умолчанию является язык с поддержкой БДЦС. В противном случае функция ПОИСКБ работает так же, как функция ПОИСК, и отсчитывает по одному байту на каждый символ.
К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.
Аргументы функций ПОИСК и ПОИСКБ описаны ниже.
Искомый_текст Обязательный. Текст, который требуется найти.
Просматриваемый_текст Обязательный. Текст, в котором нужно найти значение аргумента искомый_текст.
Начальная_позиция Необязательный. Номер знака в аргументе просматриваемый_текст, с которого следует начать поиск.
Функции ПОИСК и ПОИСКБ не учитывают регистр. Если требуется учитывать регистр, используйте функции НАЙТИ и НАЙТИБ.
В аргументе искомый_текст можно использовать подстановочные знаки: вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку, звездочка — любой последовательности знаков. Если требуется найти вопросительный знак или звездочку, введите перед ним тильду (
Если значение аргумента искомый_текст не найдено, #VALUE! возвращено значение ошибки.
Если аргумент начальная_позиция опущен, то он полагается равным 1.
Если Нач_позиция не больше 0 или больше, чем длина аргумента просматриваемый_текст , #VALUE! возвращено значение ошибки.
Аргумент начальная_позиция можно использовать, чтобы пропустить определенное количество знаков. Допустим, что функцию ПОИСК нужно использовать для работы с текстовой строкой «МДС0093.МужскаяОдежда». Чтобы найти первое вхождение «М» в описательной части текстовой строки, задайте для аргумента начальная_позиция значение 8, чтобы поиск не выполнялся в той части текста, которая является серийным номером (в данном случае — «МДС0093»). Функция ПОИСК начинает поиск с восьмого символа, находит знак, указанный в аргументе искомый_текст, в следующей позиции, и возвращает число 9. Функция ПОИСК всегда возвращает номер знака, считая от начала просматриваемого текста, включая символы, которые пропускаются, если значение аргумента начальная_позиция больше 1.
Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.
Текстовые функции Excel
ФИО, номера банковских карт, адреса клиентов или сотрудников, комментарии и многое другое –все это является строками, с которыми многие сталкиваются, работая с приложением Excel. Поэтому полезно уметь обрабатывать информацию подобного типа. В данной статье будут рассмотрены текстовые функции в Excel, но не все, а те, которые, по мнению office-menu.ru, самые полезные и интересные:
Список всех текстовых функций Вы можете найти на вкладке «Формулы» => выпадающий список «Текстовые»:
Функция ЛЕВСИМВ
Возвращает подстроку из текста в порядке слева направо в заданном количестве символов.
Синтаксис: =ЛЕВСИМВ(текст; [количество_знаков])
- текст – строка либо ссылка на ячейку, содержащую текст, из которого необходимо вернуть подстроку;
- количество_знаков – необязательный аргумент. Целое число, указывающее, какое количество символов необходимо вернуть из текста. По умолчанию принимает значение 1.
Пример использования:
Формула: =ЛЕВСИМВ(«Произвольный текст»;8) – возвращенное значение «Произвол».
Функция ПРАВСИМВ
Данная функция аналогична функции «ЛЕВСИМВ», за исключением того, что знаки возвращаются с конца строки.
Пример использования:
Формула: =ПРАВСИМВ(«произвольный текст»;5) – возвращенное значение «текст».
Функция ДЛСТР
С ее помощью определяется длина строки. В качестве результата возвращается целое число, указывающее количество символов текста.
Синтаксис: =ДЛСТР(текст)
Пример использования:
Функция НАЙТИ
Возвращает число, являющееся вхождением первого символа подстроки, искомого текста. Если текст не найден, то возвращается ошибка «#ЗНАЧ!».
Синтаксис: =НАЙТИ(искомый_текст; текст_для_поиска; [нач_позиция])
- искомый_текст – строка, которую необходимо найти;
- текст_для_поиска – текст, в котором осуществляется поиск первого аргумента;
- нач_позиция – необязательный элемент. Принимает целое число, которое указывает, с какого символа текст_для_поиска необходимо начинать просмотр. По умолчанию принимает значение 1.
Пример использования:
Из отрывка стихотворения великого поэта С.А.Есенина находим вхождение первого символа строки «птица». Поиск осуществляется с начала строки. Если в приведенном примере поиск осуществлялся бы с 40 символа, то функция в результате вернула ошибку, т.к. позиции вхождения не было найдено.
Функция ЗАМЕНИТЬ
Данная функция заменяет часть строки в заданном количестве символов, начиная с указанного по счету символа на новый текст.
Синтаксис: ЗАМЕНИТЬ(старый_текст; начальная_позиция; количество_знаков; новый_текст)
- старый_текст – строка либо ссылка на ячейку, содержащую текст;
- начальная_позиция – порядковый номер символа слева направо, с которого нужно производить замену;
- количество_знаков – количество символов, начиная с начальная_позиция включительно, которые необходимо заменить новым текстом;
- новый_текст – строка, которая подменяет часть старого текста, заданного аргументами начальная_позиция и количество_знаков.
Пример использования:
Здесь в строке, содержащейся в ячейке A1, подменяется слово «старый», которое начинается с 19-го символа и имеет длину 6 символов, на слово «новый».
В случае обработки небольшого количества ячеек такой способ вполне приемлем. Но если обработать необходимо несколько тысяч различных строк, то процесс составления формул станет трудоемким. Поэтому переделаем рассмотренный пример, используя знания по тем функциям, которые уже описаны в начале статьи, а именно:
- Аргумент «начальная_позиция» подменим функцией «НАЙТИ»;
- В место аргумент «количество_знаков» вложим функцию «ДЛСТР».
В результате получим формулу: =ЗАМЕНИТЬ(A1;НАЙТИ(«старый»;A1);ДЛСТР(«старый»);»новый»)
Посмотрите на принтскрин окна функции. Возвращаемые результаты аргументов не поменялись, зато теперь их можно определять динамически, составив формулу один раз.
Функция ПОДСТАВИТЬ
Данная функция заменяет в тексте вхождения указанной подстроки на новый текст, чем схожа с функцией «ЗАМЕНИТЬ», но между ними имеется принципиальное отличие. Если функция «ЗАМЕНИТЬ» меняет текст, указанный посимвольно вручную, то функция «ПОДСТАВИТЬ» автоматически находит вхождения указанной строки и меняет их.
Синтаксис: ПОДСТАВИТЬ(текст; старый_текст; новый_текст; [номер_вхождения])
- текст – строка или ссылка на ячейку, содержащую текст;
- старый_текст – подстрока из первого аргумента, которую необходимо заменить;
- новый_текст – строка для подмены старого текста;
- номер_вхождения – необязательный аргумент. Принимает целое число, указывающее порядковый номер вхождения старый_текст, которое подлежит замене, все остальные вхождения затронуты не будут. Если оставить аргумент пустым, то будут заменены все вхождения.
Пример использования:
Строка в ячейке A1 содержит текст, в котором имеются 2 подстроки «старый». Нам необходимо подставить на место первого вхождения строку «новый». В результате часть текста «…старый-старый…», заменяется на «…новый-старый…».
Если ли бы последний аргумент был опущен, то результатом бы стала строка «строка, содержащая новый-новый текст».
Функция ПСТР
ПСТР возвращает из указанной строки часть текста в заданном количестве символов, начиная с указанного символа.
Синтаксис: ПСТР(текст; начальная_позиция; количество_знаков)
- текст – строка или ссылка на ячейку, содержащую текст;
- начальная_позиция – порядковый номер символа, начиная с которого необходимо вернуть строку;
- количество_знаков – натуральное целое число, указывающее количество символов, которое необходимо вернуть, начиная с позиции начальная_позиция.
Пример использования:
Из текста, находящегося в ячейке A1 необходимо вернуть последние 2 слова, которые имеют общую длину 12 символов. Первый символ возвращаемой фразы имеет порядковый номер 12.
Аргумент количество_знаков может превышать допустимо возможную длину возвращаемых символов. Т.е. если в рассмотренном примере вместо количество_знаков = 12, было бы указано значение 15, то результат не изменился, и функция так же вернула строку «функции ПСТР».
Для удобства использования данной функции ее аргументы можно подменить функциями «НАЙТИ» и «ДЛСТР», как это было сделано в примере с функцией «ЗАМЕНИТЬ».
Функция СЖПРОБЕЛЫ
Данная функция удаляется все лишние пробелы: пробелы по краям и двойные пробелы между словами. После обработки строк функцией остаются только одиночные пробелы между словами.
Синтаксис: =СЖПРОБЕЛЫ(текст)
Пример использования:
=СЖПРОБЕЛЫ( » Текст с лишними пробелами между словами и по краям « )
Результатом выполнения функции будет строка: «Текст с лишними пробелами между словами и по краям» .
Функция СЦЕПИТЬ
С помощью функции «СЦЕПИТЬ» можно объединить несколько строк между собой. Максимальное количество строк для объединения – 255.
Синтаксис: =СЦЕПИТЬ(текст1; [текст2]; …)
Функция должна содержать не менее одного аргумента
Пример использования:
Функция возвратит строку: «Слово1 Слово2».
Не забывайте, что функция самостоятельно не добавляет пробелы между строками, поэтому добавлять их приходится самостоятельно.
Вместо использования данной функции можно применять знак амперсанда «&». Он так же объединяет строки. Например: «=»Слово1″&» «&«Слово2″».
Пример функция ПСТР для разделения текста на части в Excel
Функция ПСТР в Excel предназначена для выделения подстроки из строки текста, переданной в качестве первого аргумента, и возвращает требуемое количество символов начиная с заданной позиции.
Примеры использования функции ПСТР в Excel
Один символ в языках с однобайтовой кодировкой соответствует 1 байту. При работе с такими языками результаты функций ПСТР и ПСТРБ (возвращает подстроку из строки на основе количества заданных байт) не отличаются. Если на компьютере используется двухбайтовый язык, каждый символ при использовании ПСТРБ будет считаться за два. Двухбайтовыми языками являются корейский, японский и китайский.
Как разделить текст на несколько ячеек по столбцам в Excel?
Пример 1. В столбце таблицы содержатся даты, записанные в виде текстовых строк. Записать отдельно в соседних столбцах номер дня, месяца и год, выделенные из представленных дат.
Вид исходной таблицы данных:
Для заполнения номера дня используем следующую формулу (использовать в качестве формулы массива):
- A2:A10 – диапазон ячеек с текстовым представлением дат, из которых будут выделены номера дней;
- 1 – номер начальной позиции символа извлекаемой подстроки (первый символ в исходной строке);
- 2 – номер последней позиции символа извлекаемой подстроки.
Аналогичным способом выделим номера месяца и годы для заполнения соответствующих столбцов с учетом, что номер месяца начинается с 4-го символа в каждой строке, а год – с 7-го. Используем следующие формулы:
Вид заполненной таблицы данных:
Таким образом нам удалось разрезать на части текст в ячейках столбца A. Удалось отдельно каждую дату разделить на несколько ячеек по столбцам: день, месяц и год.
Как вырезать часть текста ячейки в Excel?
Пример 2. В столбце таблицы хранятся текстовые записи с наименованием и маркой товаров. Разделить имеющиеся строки на подстроки с наименованием и маркой соответственно и записать полученные значения в соответствующие столбцы таблицы.
Вид таблицы данных:
Для заполнения столбца «Наименование» используем следующую формулу:
Функция НАЙТИ возвращает номер позиции символа пробела « » в просматриваемой строке, который принимается в качестве аргумента число_знаков функции ПСТР. В результате расчетов получим:
Для заполнения столбца «Марка» используем следующую формулу массива:
Функция НАЙТИ возвращает позицию символа пробела. К полученному числу прибавляется единица для нахождения позиции первого символа названия марки продукта. Итоговое значение используется в качестве аргумента начальная_позиция функции ПСТР. Для упрощения, вместо поиска номера последней позиции (например, с помощью функции ДЛСТР) указано число 100, которое в данном примере гарантированно превышает количество знаков в изначальной строке.
В результате расчетов получим:
Как посчитать возраст по дате рождения в Excel?
Пример 3. В таблице содержатся данные о сотрудниках в столбцах ФИО и дата рождения. Создать столбец, в котором будет отображаться фамилия сотрудника и его возраст в формате «Иванов – 27».
Вид исходной таблицы:
Для возврата строки с фамилией и текущим возрастом используем следующую формулу:
Функция ПСТР возвращает часть строки до символа пробела, позиция которого определяется функцией НАЙТИ. Для нахождения возраста сотрудника используется функция РАЗНДАТ, полученное значение которой усекается до ближайшего меньшего целого, чтобы получить число полных лет. Функция ТЕКСТ преобразует полученное значение в текстовую строку.
Для соединения (конкатенации) полученных строк используются символы «&». В результате вычислений получим:
Особенности использования функции ПСТР в Excel
Функция имеет следующую синтаксическую запись:
- текст – обязательный для заполнения аргумент, принимающий ссылку на ячейку с текстом или текстовую строку, заключенную в кавычки, из которой будет извлечена подстрока определенной длины начиная с указанной позиции первого символа;
- начальная_позиция – обязательный аргумент, принимающий целые числа из диапазона от 1 до N, где N – длина строки, из которой требуется извлечь подстроку заданного размера. Начальная позиция символа в строке соответствует числу 1. Если данный аргумент принимает дробное число из диапазона допустимых значений, дробная часть будет усечена;
- число_знаков – обязательный аргумент, принимающий значение из диапазона неотрицательных чисел, которое характеризует длину в символах возвращаемой подстроки. Если в качестве этого аргумента передано число 0 (нуль), функция ПСТР вернет пустую строку. Если аргумент задан числом, превышающим количество символов в строке, будет возвращена вся часть строки начиная с указанной вторым аргументом позиции. В дробных числах, используемых в качестве данного аргумента, дробная часть усекается.
Функция ПСТРБ имеет схожий синтаксис:
Она отличается единственным аргументом:
- число_байтов – обязательный аргумент, принимающий целые числа из диапазона от 1 до N, где N – число байтов в исходной строке, характеризующий количество байт в возвращаемой подстроке.
- Функция ПСТР вернет пустую строку, если в качестве аргумента начальная_позиция было передано число, превышающее количество символов в исходной строке.
- Если в качестве аргумента начальная_позиция было передано значение 1, а аргумент число_знаков определен числом, которое равно или больше общему числу знаков в исходной строке, функция ПСТР вернет всю строку целиком.
- Если аргумент начальная_позиция был указан числом из диапазона отрицательных чисел или 0 (нулем), функция ПСТР вернет код ошибки #ЗНАЧ!.
- Если аргумент число_знаков задан отрицательным числом, результатом выполнения функции ПСТР будет код ошибки #ЗНАЧ!.
Функции Excel для работы с элементами строк
Следующие функции находят и возвращают части текстовых строк или составляют большие строки из небольших: НАЙТИ (FIND), ПОИСК (SEARCH), ПРАВСИМВ (RIGHT), ЛЕВСИМВ (LEFT), ПСТР (MID), ПОДСТАВИТЬ (SUBSTITUTE), ПОВТОР (REPT), ЗАМЕНИТЬ (REPLACE), СЦЕПИТЬ (CONCATENATE).
Функции НАЙТИ и ПОИСК
Функции НАЙТИ (FIND) и ПОИСК (SEARCH) используются для определения позиции одной текстовой строки в другой. Обе функции возвращают номер символа, с которого начинается первое вхождение искомой строки. Эти две функции работают одинаково за исключением того, что функция НАЙТИ учитывает регистр букв, а функция ПОИСК допускает использование символов шаблона. Функции имеют следующий синтаксис:
=НАЙТИ(искомый_текст;просматриваемый_текст;нач_позиция)
=ПОИСК(искомый_текст;просматриваемый_текст;нач_позиция)
Аргумент искомый_текст задает текстовую строку, которую надо найти, а аргумент просматриваемый_текст — текст, в котором производится поиск. Любым из этих аргументов может быть строка символов, заключенная в двойные кавычки, или ссылка на ячейку. Необязательный аргумент нач_позиция задает позицию в просматриваемом тексте, с которой начинается поиск. Аргумент нач_позиция следует использовать в том случае, когда просматриваемый_текст содержит несколько вхождений искомого текста. Если данный аргумент опущен, Excel возвращает позицию первого вхождения.
Эти функции возвращают ошибочное значение, когда искомый_текст не содержится в просматриваемом тексте, либо нач_позиция меньши или равна нулю, либо нач_позиция превышает количество символов в просматриваемом тексте, либо нач_позиция больше позиции последнего вхождения искомого текста.
Например, чтобы определить позицию буквы «ж» в строке «Гаражные ворота», надо использовать формулу:
Эта формула возвращает 5.
Если точная последовательность символов искомого текста неизвестна, можно использовать функцию ПОИСК и включить в строку искомый_текст символы шаблона: знак вопроса (?) и звездочку (*). Знак вопроса соответствует одному произвольно набранному символу, а звездочка заменяет любую последовательность символов в указанной позиции. Например, чтобы найти позицию имен Анатолий, Алексей, Акакий в тексте, находящемся в ячейке А1, надо использовать формулу:
Функции ПРАВСИМВ и ЛЕВСИМВ
Функция ПРАВСИМВ (RIGHT) возвращает крайние правые символы строки аргумента, в то время как функция ЛЕВСИМВ (LEFT) возвращает первые (левые) символы. Синтаксис:
=ПРАВСИМВ(текст;количество_символов)
=ЛЕВСИМВ(текст;количество_символов)
Аргумент количество_символов задает число символов, извлекаемых из аргумента текст. Эти функции учитывают пробелы и поэтому, если аргумент текст содержит пробелы в начале или конце строки, в аргументах функций следует использовать функцию СЖПРОБЕЛЫ.
Аргумент количестов_символов должен быть больше или равен нулю. Если этот аргумент опускается, Excel считает его равным 1. Если количество_символов больше числа символов в аргументе текст, то возвращается весь аргумент.
Функция ПСТР
Функция ПСТР (MID) возвращает заданное число символов из строки текста, начиная с указанной позиции. Эта функция имеет следующий синтаксис:
=ПСТР(текст;нач_позиция;количество_символов)
Аргумент текст — это текстовая строка, содержащая извлекаемые символы, нач_позиция — это позиция первого символа, извлекаемого из текста (относительно начала строки), а количество_символов — это число извлекаемых символов.
Функции ЗАМЕНИТЬ и ПОДСТАВИТЬ
Эти две функции заменяют символы в тексте. Функция ЗАМЕНИТЬ (REPLACE) замещает часть текстовой строки другой текстовой строкой и имеет синтаксис:
=ЗАМЕНИТЬ(старый_текст;нач_позиция;количество_символов;новый_текст)
Аргумент старый_текст — это текстовая строка, а которой надо заменить символы. Следующие два аргумента задают символы, которые нужно заменить (относительно начала строки). Аргумент новый_текст задает вставляемую текстовую строку.
Например, ячейка А2 содержит текст «Вася Иванов». Чтобы поместить этот же текст в ячейку А3, заменив имя, надо в ячейку А3 вставить следующую функцию:
В функции ПОДСТАВИТЬ (SUBSTITUTE) начальная позиция и число заменяемых символов не задаются, а явно указывается замещаемый текст. Функция ПОДСТАВИТЬ имеет следующий синтаксис:
=ПОДСТАВИТЬ(текст;старый_текст;новый_текст;номер_вхождения)
Аргумент номер_вхождения является необязательным. Он предписывает Excel заменить только заданное вхождение строки старый_текст.
Например, ячейка А1 содержит текст «Ноль меньше восьми». Надо заменить слово «ноль» на «нуль».
Число 1 в этой формуле указывает, что надо изменить только первое «о» в строке ячейки А1. Если аргумент номер_вхождения опущен, Excel заменяет все вхождения строки старый_текст на строку новый_текст.
Функция ПОВТОР
Функция ПОВТОР (REPT) позволяет заполнить ячейку строкой символов, повторенной заданное количество раз. Синтаксис:
=ПОВТОР(текст;число_повторений)
Аргумент текст — это размноженная строка символов, заключенная в кавычки. Аргумент число_повторений указывает, сколько раз нужно повторить текст. Если аргумент число_повторений равен 0, функция ПОВТОР оставляет ячейку пустой, а если он не является целым числом, эта функция отбрасывает десятичные знаки после запятой.
Функция СЦЕПИТЬ
Функция СЦЕПИТЬ (CONCATENATE) является эквивалентом текстового оператора & и используется для объединения строк. Синтаксис:
=СЦЕПИТЬ(текст1;текст2;. )
В функции можно использовать до 30 аргументов.
Например, ячейка А5 содержит текст «первое полугодие», следующая формула возвращает текст «Всего за первое полугодие»:
=СЦЕПИТЬ(«Всего за «;А5)
В начало страницы
В начало страницы
Функция ПОИСК() в MS EXCEL
Синтаксис функции
ПОИСК(искомый_текст;просматриваемая_строка;[нач_позиция])
Искомый_текст — текст, который требуется найти.
Просматриваемая_строка — текст, в которой ищется Искомый_текст.
Нач_позиция — позиция знака в просматриваемой_строке, с которой должен начинаться поиск. Если аргумент нач_позиция опущен, то предполагается значение 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)) — имя. Если между именем и фамилией содержится более одного пробела, то для работоспособности вышеупомянутых формул используйте функцию СЖПРОБЕЛЫ() .
Хитрости »
4 Январь 2016 119738 просмотров
Найти в ячейке любое слово из списка
Предположим, вы получаете от поставщика/заказчика/клиента заполненную таблицу с перечнем продукции:
и эту таблицу необходимо сравнить с артикулами/кодами товара в имеющемся у вас каталоге продукции:
Как видно — в нашем каталоге только артикулы без наименований. У заказчика же помимо артикулов еще и название товара, т.е. много лишнего. И вам надо понять какие товары присутствуют в вашем каталоге, а какие нет:
Стандартных формул в Excel для подобного поиска и сравнения нет. Конечно, можно попробовать применить ВПР с подстановочными символами сначала к одной таблице, а затем к другой. Но если подобную операцию необходимо проделывать раз за разом, то прописывать по несколько формул к каждой таблице прямо скажем — не комильфо.
Поэтому я и решил сегодня продемонстрировать формулу, которая без всяких доп. манипуляций поможет такое сравнение сделать. Чтобы разобраться самостоятельно рекомендую скачать файл:
Скачать файл:
Tips_All_AnyoneOfArray.xls (49,5 KiB, 25 681 скачиваний)
На листе «Заказ» в этом файле таблица, полученная от заказчика, а на листе «Каталог» наши артикулы.
Сама формула на примере файла будет выглядеть так:
=ПРОСМОТР(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)
: она берет значение, заданное первым аргументом и ищет его в массиве(диапазоне) из второго аргумента. Как только находит — запоминает его позицию(строку, если угодно) и в итоге возвращает значение, расположенное в этой же позиции в массиве третьего аргумента.
Но у функции есть пара особенностей:
- Она ищет не обязательно именно точное совпадение с искомым, а максимально приближенное к нему. Если точнее — равное или большее искомому.
- Функция ПРОСМОТР(LOOKUP) старается преобразовать непосредственно в массив любое выражение, записанное вторым аргументом.
Этими особенностями мы и будем пользоваться.
Как уже упомянул выше — в качестве диапазона для поиска значения обычно приводится массив ячеек, но т.к. функция ПРОСМОТР(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(третий аргумент), записанное в этом массиве для этой позиции.
Вы можете просмотреть этапы вычисления функции самостоятельно для каждой ячейки, я здесь просто приведу этапы чуть в расширенном для понимания виде:
- =ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$A$2:$A$11)
- =ПРОСМОТР(2;
1/{55:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!};
Каталог!$A$2:$A$11) - =ПРОСМОТР(2;{0,0181818181818182:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!};Каталог!$A$2:$A$11)
- =ПРОСМОТР(2;
1;
{«FM2-3320″:»CV455689″:»Q5949X»:»CE321A»:»CE322A»:»CE323A»:»00064073″:»CX292708″:»CX292709″:»CX292710″}) - =»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
ссылки
статистика