НАЙТИ, НАЙТИБ (функции НАЙТИ, НАЙТИБ)
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше
В этой статье описаны синтаксис формулы и использование функций НАЙТИ и НАЙТИБ в Microsoft Excel.
Описание
Функции НАЙТИ и НАЙТИБ находят вхождение одной текстовой строки в другую и возвращают начальную позицию искомой строки относительно первого знака второй строки.
Важно:
-
Эти функции могут быть доступны не на всех языках.
-
Функция НАЙТИ предназначена для языков с однобайтовой кодировкой, а функция НАЙТИБ — для языков с двухбайтовой кодировкой. Заданный на компьютере язык по умолчанию влияет на возвращаемое значение указанным ниже образом.
-
Функция НАЙТИ при подсчете всегда рассматривает каждый знак, как однобайтовый, так и двухбайтовый, как один знак, независимо от выбранного по умолчанию языка.
-
Функция НАЙТИБ при подсчете рассматривает каждый двухбайтовый знак как два знака, если включена поддержка языка с БДЦС и такой язык установлен по умолчанию. В противном случае функция НАЙТИБ рассматривает каждый знак как один знак.
К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.
Синтаксис
НАЙТИ(искомый_текст;просматриваемый_текст;[нач_позиция])
НАЙТИБ(искомый_текст;просматриваемый_текст;[нач_позиция])
Аргументы функций НАЙТИ и НАЙТИБ описаны ниже.
-
Искомый_текст — обязательный аргумент. Текст, который необходимо найти.
-
Просматриваемый_текст — обязательный аргумент. Текст, в котором нужно найти искомый текст.
-
Начальная_позиция — необязательный аргумент. Знак, с которого нужно начать поиск. Первый знак в тексте «просматриваемый_текст» имеет номер 1. Если номер опущен, он полагается равным 1.
Замечания
-
Функции НАЙТИ и НАЙТИБ работают с учетом регистра и не позволяют использовать подстановочные знаки. Если необходимо выполнить поиск без учета регистра или использовать подстановочные знаки, воспользуйтесь функцией ПОИСК или ПОИСКБ.
-
Если в качестве аргумента «искомый_текст» задана пустая строка («»), функция НАЙТИ выводит значение, равное первому знаку в строке поиска (знак с номером, соответствующим аргументу «нач_позиция» или 1).
-
Искомый_текст не может содержать подстановочные знаки.
-
Если find_text не отображаются в within_text, find и FINDB возвращают #VALUE! значение ошибки #ЗНАЧ!.
-
Если start_num не больше нуля, то найти и найтиБ возвращает значение #VALUE! значение ошибки #ЗНАЧ!.
-
Если start_num больше, чем длина within_text, то поиск и НАЙТИБ возвращают #VALUE! значение ошибки #ЗНАЧ!.
-
Аргумент «нач_позиция» можно использовать, чтобы пропустить нужное количество знаков. Предположим, например, что для поиска строки «МДС0093.МесячныеПродажи» используется функция НАЙТИ. Чтобы найти номер первого вхождения «М» в описательную часть текстовой строки, задайте значение аргумента «нач_позиция» равным 8, чтобы поиск в той части текста, которая является серийным номером, не производился. Функция НАЙТИ начинает со знака 8, находит искомый_текст в следующем знаке и возвращает число 9. Функция НАЙТИ всегда возвращает номер знака, считая от левого края текста «просматриваемый_текст», а не от значения аргумента «нач_позиция».
Примеры
Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.
Данные |
||
Владимир Егоров |
||
Формула |
Описание |
Результат |
=НАЙТИ(«В»;A2) |
Позиция первой «В» в ячейке A2 |
1 |
=НАЙТИ(«в»;A2) |
Позиция первой «в» в ячейке A2 |
6 |
=НАЙТИ(«и»;A2;3) |
Позиция первой «и» в строке А2, начиная с третьего знака |
8 |
Пример 2
Данные |
||
Керамический изолятор №124-ТД45-87 |
||
Медная пружина №12-671-6772 |
||
Переменный резистор №116010 |
||
Формула |
Описание (результат) |
Результат |
=ПСТР(A2;1;НАЙТИ(» №»;A2;1)-1) |
Выделяет текст от позиции 1 до знака «№» в строке («Керамический изолятор») |
Керамический изолятор |
=ПСТР(A3;1;НАЙТИ(» №»;A3;1)-1) |
Выделяет текст от позиции 1 до знака «№» в ячейке А3 («Медная пружина») |
Медная пружина |
=ПСТР(A4;1;НАЙТИ(» №»;A4;1)-1) |
Выделяет текст от позиции 1 до знака «№» в ячейке А4 («Переменный резистор») |
Переменный резистор |
Нужна дополнительная помощь?
Программа Excel ориентирована на ускоренные расчеты. Зачастую документы здесь состоят из большого ко…
Программа Excel ориентирована на ускоренные расчеты. Зачастую документы здесь состоят из большого количества листов, на которых представлены длинные таблицы с числами, формулами или текстом. Для удобного нахождения нужных ячеек существует специальный автоматизированный поиск. Ознакомившись с особенностями его использования, можно сократить время работы в документах. О том, как искать в Экселе слова, фразы или ячейки, подробно написано ниже.
Поиск слов
Документы часто имеют много страниц, тогда встает вопрос о том, как в Еxcel найти слово. Сделать это иногда становится проблематично. Для упрощения этой задачи существует специальная функция поиска. Чтобы ею воспользоваться, необходимо выполнить следующий алгоритм действий:
- запустить программу Excel;
- проверить активность таблицы, щелкнув по любой из ячеек;
- нажать комбинацию клавиш «Ctrl + F»;
- в строке «Найти» появившегося окна ввести искомое слово;
- нажать «Найти».
В результате программа активирует поисковую функцию, а найденные слова в таблице или книге будут подсвечены.
Существует также способ нестрогого поиска, который подходит для ситуаций, когда искомое слово помнится частично. Он предусматривает использование символов-заменителей (джокерные символы). В Excel их всего два:
- «?» – подразумевает любой отдельно взятый символ;
- «*» – обозначает любое количество символов.
Примечательно, при поиске вопросительного знака или знака умножения дополнительно впереди ставится тильда («~»). При поиске тильды, соответственно – две тильды.
Алгоритм неточного поиска слова:
- запустить программу;
- активировать страницу щелчком мыши;
- зажать комбинацию клавиш «Ctrl + F»;
- в строке «Найти» появившегося окна ввести искомое слово, используя вместо букв, вызывающих сомнения, джокерные символы;
- проверить параметр «Ячейка целиком» (он не должен быть отмеченным);
- нажать «Найти все».
Все слова, подходящие под параметры поиска, подсветятся, поэтому их легко будет увидеть и проанализировать.
Поиск нескольких слов
Не зная, как найти слово в таблице в Еxcel, следует также воспользоваться функцией раздела «Редактирование» – «Найти и выделить». Далее нужно отталкиваться от искомой фразы:
- если фраза точная, введите ее и нажмите клавишу «Найти все»;
- если фраза разбита другими ключами, нужно при написании ее в строке поиска дополнительно проставить между всеми словами «*».
В первом случае поиск выдаст все результаты с точной поисковой фразой, игнорируя другие склонения или разбавленные ее варианты. Во втором случае отыщутся все значения с введенными надписями, даже если между ними присутствуют другие символы.
Поиск ячеек
Ячейки могут содержать в себе формулы или значения, быть объеденными или скрытыми. Эти характеристики изменяют ход поиска интересующих нас ячеек.
Для поиска ячеек с формулами выполняются следующие действия.
- В открытом документе выделить ячейку или диапазон ячеек (в первом случае поиск идет по всему листу, во втором – в выделенных ячейках).
- Во вкладке «Главная» выбрать функцию «Найти и выделить».
- Обозначить команду «Перейти».
- Выделить клавишу «Выделить».
- Выбрать «Формулы».
- Обратить внимание на список пунктов под «Формулами» (возможно, понадобится снятие флажков с некоторых параметров).
- Нажать клавишу «Ок».
Для поиска объединенных ячеек потребуется выполнение следующих манипуляций.
- Перейти во вкладку «Главная».
- Выбрать функцию «Найти и выделить».
- Нажать на команду «Найти».
- Перейти в «Параметры» и выбрать «Формат».
- Здесь выделить функцию «Выравнивание», поставить отметку «Объединить ячейки».
- Нажать на «Ок».
- Нажать на кнопку «Найти все» и проанализировать список ячеек, которые объединены на соответствующем листе.
При нажимании кнопкой мыши на элемент в списке происходит выделение объединенной ячейки на листе. Дополнительно доступна функция «Отменить объединение ячеек».
Выполнение представленных выше действий приводит к нахождению всех объединенных ячеек на листе и при необходимости отмене данного свойства. Для поиска скрытых ячеек проводятся следующие действия.
- Выбрать лист, требующий анализа на присутствие скрытых ячеек и их нахождения.
- Нажать клавиши «F5_гт_
Special». - Нажать сочетание клавиш «CTRL + G_гт_ Special».
Можно воспользоваться еще одним способом для поиска скрытых ячеек:
- Открыть функцию «Редактирование» во вкладке «Главная».
- Нажать на «Найти».
- Выбрать команду «Перейти к разделу». Выделить «Специальные».
- Попав в группу «Выбор», поставить галочку на «Только видимые ячейки».
- Нажать кнопку «Ок».
В результате проделанных действий видимые ячейку выделятся, при этом границы столбцов и строк, которые граничат со скрытыми ячейками или столбцами, предстанут с белыми границами.
Если интересующая ячейка обозначена условным форматом, ее несложно найти и применить для копирования, удаления или редактирования непосредственно условного формата. Если речь идет о ячейке с определенным условным форматом, тогда на помощь придет функция «Выделить группу ячеек».
Чтобы найти ячейки, для которых применено условное форматирование:
- нажать на ячейку, не предусматривающую условное форматирование;
- выбрать функцию «Редактирование» во вкладке «Главная»;
- нажать на кнопку «Найти и выделить»;
- выделить категорию «Условное форматирование».
Чтобы найти ячейки, для которых применено одинаковое условное форматирование:
- выбрать ячейку, предусматривающую условное форматирование, требующую поиска;
- выбрать группу «Редактирование» во вкладке «Главная»;
- нажать на кнопку «Найти и выделить»;
- выбрать категорию «Выделить группу ячеек»;
- установить свойство «Условные форматы»;
- напоследок нужно зайти в группу «Проверка данных» и установить аналогичный пункт.
Поиск через фильтр
Чтобы узнать, как в Еxcel найти слово при использовании фильтра, потребуется изучить следующий алгоритм действий:
- выделить заполненную ячейку;
- во вкладке «Главная» выбрать функцию «Сортировка»;
- нажать на кнопку «Фильтр»;
- открыть выпадающее меню;
- ввести искомый запрос;
- нажать кнопку «Ок».
В результате в столбце выделятся только ячейки с искомым значением. Для сбрасывания результатов поиска в выпадающем списке необходимо нажать на «Выделить все». Для отключения фильтра потребуется еще раз нажать на его значок в функции «Сортировка». Примечательно, данный способ не даст результатов, если неизвестен ряд с искомым значением.
Функция ПОИСК() в 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
ничего не понятно.
Содержание
- Поисковая функция в Excel
- Способ 1: простой поиск
- Способ 2: поиск по указанному интервалу ячеек
- Способ 3: Расширенный поиск
- Вопросы и ответы
В документах Microsoft Excel, которые состоят из большого количества полей, часто требуется найти определенные данные, наименование строки, и т.д. Очень неудобно, когда приходится просматривать огромное количество строк, чтобы найти нужное слово или выражение. Сэкономить время и нервы поможет встроенный поиск Microsoft Excel. Давайте разберемся, как он работает, и как им пользоваться.
Поисковая функция в Excel
Поисковая функция в программе Microsoft Excel предлагает возможность найти нужные текстовые или числовые значения через окно «Найти и заменить». Кроме того, в приложении имеется возможность расширенного поиска данных.
Способ 1: простой поиск
Простой поиск данных в программе Excel позволяет найти все ячейки, в которых содержится введенный в поисковое окно набор символов (буквы, цифры, слова, и т.д.) без учета регистра.
- Находясь во вкладке «Главная», кликаем по кнопке «Найти и выделить», которая расположена на ленте в блоке инструментов «Редактирование». В появившемся меню выбираем пункт «Найти…». Вместо этих действий можно просто набрать на клавиатуре сочетание клавиш Ctrl+F.
- После того, как вы перешли по соответствующим пунктам на ленте, или нажали комбинацию «горячих клавиш», откроется окно «Найти и заменить» во вкладке «Найти». Она нам и нужна. В поле «Найти» вводим слово, символы, или выражения, по которым собираемся производить поиск. Жмем на кнопку «Найти далее», или на кнопку «Найти всё».
- При нажатии на кнопку «Найти далее» мы перемещаемся к первой же ячейке, где содержатся введенные группы символов. Сама ячейка становится активной.
Поиск и выдача результатов производится построчно. Сначала обрабатываются все ячейки первой строки. Если данные отвечающие условию найдены не были, программа начинает искать во второй строке, и так далее, пока не отыщет удовлетворительный результат.
Поисковые символы не обязательно должны быть самостоятельными элементами. Так, если в качестве запроса будет задано выражение «прав», то в выдаче будут представлены все ячейки, которые содержат данный последовательный набор символов даже внутри слова. Например, релевантным запросу в этом случае будет считаться слово «Направо». Если вы зададите в поисковике цифру «1», то в ответ попадут ячейки, которые содержат, например, число «516».
Для того, чтобы перейти к следующему результату, опять нажмите кнопку «Найти далее».
Так можно продолжать до тех, пор, пока отображение результатов не начнется по новому кругу.
- В случае, если при запуске поисковой процедуры вы нажмете на кнопку «Найти все», все результаты выдачи будут представлены в виде списка в нижней части поискового окна. В этом списке находятся информация о содержимом ячеек с данными, удовлетворяющими запросу поиска, указан их адрес расположения, а также лист и книга, к которым они относятся. Для того, чтобы перейти к любому из результатов выдачи, достаточно просто кликнуть по нему левой кнопкой мыши. После этого курсор перейдет на ту ячейку Excel, по записи которой пользователь сделал щелчок.
Способ 2: поиск по указанному интервалу ячеек
Если у вас довольно масштабная таблица, то в таком случае не всегда удобно производить поиск по всему листу, ведь в поисковой выдаче может оказаться огромное количество результатов, которые в конкретном случае не нужны. Существует способ ограничить поисковое пространство только определенным диапазоном ячеек.
- Выделяем область ячеек, в которой хотим произвести поиск.
- Набираем на клавиатуре комбинацию клавиш Ctrl+F, после чего запуститься знакомое нам уже окно «Найти и заменить». Дальнейшие действия точно такие же, что и при предыдущем способе. Единственное отличие будет состоять в том, что поиск выполняется только в указанном интервале ячеек.
Способ 3: Расширенный поиск
Как уже говорилось выше, при обычном поиске в результаты выдачи попадают абсолютно все ячейки, содержащие последовательный набор поисковых символов в любом виде не зависимо от регистра.
К тому же, в выдачу может попасть не только содержимое конкретной ячейки, но и адрес элемента, на который она ссылается. Например, в ячейке E2 содержится формула, которая представляет собой сумму ячеек A4 и C3. Эта сумма равна 10, и именно это число отображается в ячейке E2. Но, если мы зададим в поиске цифру «4», то среди результатов выдачи будет все та же ячейка E2. Как такое могло получиться? Просто в ячейке E2 в качестве формулы содержится адрес на ячейку A4, который как раз включает в себя искомую цифру 4.
Но, как отсечь такие, и другие заведомо неприемлемые результаты выдачи поиска? Именно для этих целей существует расширенный поиск Excel.
- После открытия окна «Найти и заменить» любым вышеописанным способом, жмем на кнопку «Параметры».
- В окне появляется целый ряд дополнительных инструментов для управления поиском. По умолчанию все эти инструменты находятся в состоянии, как при обычном поиске, но при необходимости можно выполнить корректировку.
По умолчанию, функции «Учитывать регистр» и «Ячейки целиком» отключены, но, если мы поставим галочки около соответствующих пунктов, то в таком случае, при формировании результата будет учитываться введенный регистр, и точное совпадение. Если вы введете слово с маленькой буквы, то в поисковую выдачу, ячейки содержащие написание этого слова с большой буквы, как это было бы по умолчанию, уже не попадут. Кроме того, если включена функция «Ячейки целиком», то в выдачу будут добавляться только элементы, содержащие точное наименование. Например, если вы зададите поисковый запрос «Николаев», то ячейки, содержащие текст «Николаев А. Д.», в выдачу уже добавлены не будут.
По умолчанию, поиск производится только на активном листе Excel. Но, если параметр «Искать» вы переведете в позицию «В книге», то поиск будет производиться по всем листам открытого файла.
В параметре «Просматривать» можно изменить направление поиска. По умолчанию, как уже говорилось выше, поиск ведется по порядку построчно. Переставив переключатель в позицию «По столбцам», можно задать порядок формирования результатов выдачи, начиная с первого столбца.
В графе «Область поиска» определяется, среди каких конкретно элементов производится поиск. По умолчанию, это формулы, то есть те данные, которые при клике по ячейке отображаются в строке формул. Это может быть слово, число или ссылка на ячейку. При этом, программа, выполняя поиск, видит только ссылку, а не результат. Об этом эффекте велась речь выше. Для того, чтобы производить поиск именно по результатам, по тем данным, которые отображаются в ячейке, а не в строке формул, нужно переставить переключатель из позиции «Формулы» в позицию «Значения». Кроме того, существует возможность поиска по примечаниям. В этом случае, переключатель переставляем в позицию «Примечания».
Ещё более точно поиск можно задать, нажав на кнопку «Формат».
При этом открывается окно формата ячеек. Тут можно установить формат ячеек, которые будут участвовать в поиске. Можно устанавливать ограничения по числовому формату, по выравниванию, шрифту, границе, заливке и защите, по одному из этих параметров, или комбинируя их вместе.
Если вы хотите использовать формат какой-то конкретной ячейки, то в нижней части окна нажмите на кнопку «Использовать формат этой ячейки…».
После этого, появляется инструмент в виде пипетки. С помощью него можно выделить ту ячейку, формат которой вы собираетесь использовать.
После того, как формат поиска настроен, жмем на кнопку «OK».
Бывают случаи, когда нужно произвести поиск не по конкретному словосочетанию, а найти ячейки, в которых находятся поисковые слова в любом порядке, даже, если их разделяют другие слова и символы. Тогда данные слова нужно выделить с обеих сторон знаком «*». Теперь в поисковой выдаче будут отображены все ячейки, в которых находятся данные слова в любом порядке.
- Как только настройки поиска установлены, следует нажать на кнопку «Найти всё» или «Найти далее», чтобы перейти к поисковой выдаче.
Как видим, программа Excel представляет собой довольно простой, но вместе с тем очень функциональный набор инструментов поиска. Для того, чтобы произвести простейший писк, достаточно вызвать поисковое окно, ввести в него запрос, и нажать на кнопку. Но, в то же время, существует возможность настройки индивидуального поиска с большим количеством различных параметров и дополнительных настроек.
Поиск и подстановка по нескольким условиям
Постановка задачи
Если вы продвинутый пользователь Microsoft Excel, то должны быть знакомы с функцией поиска и подстановки ВПР или VLOOKUP (если еще нет, то сначала почитайте эту статью, чтобы им стать). Для тех, кто понимает, рекламировать ее не нужно — без нее не обходится ни один сложный расчет в Excel. Есть, однако, одна проблема: эта функция умеет искать данные только по совпадению одного параметра. А если у нас их несколько?
Предположим, что у нас есть база данных по ценам товаров за разные месяцы:
Нужно найти и вытащить цену заданного товара (Нектарин) в определенном месяце (Январь), т.е. получить на выходе152, но автоматически, т.е. с помощью формулы. ВПР в чистом виде тут не поможет, но есть несколько других способов решить эту задачу.
Способ 1. Дополнительный столбец с ключом поиска
Это самый очевидный и простой (хотя и не самый удобный) способ. Поскольку штатная функция ВПР (VLOOKUP) умеет искать только по одному столбцу, а не по нескольким, то нам нужно из нескольких сделать один!
Добавим рядом с нашей таблицей еще один столбец, где склеим название товара и месяц в единое целое с помощью оператора сцепки (&), чтобы получить уникальный столбец-ключ для поиска:
Теперь можно использовать знакомую функцию ВПР (VLOOKUP) для поиска склеенной пары НектаринЯнварь из ячеек H3 и J3 в созданном ключевом столбце:
Плюсы: Простой способ, знакомая функция, работает с любыми данными.
Минусы: Надо делать дополнительный столбец и потом, возможно, еще и прятать его от пользователя. При изменении числа строк в таблице — допротягивать формулу сцепки на новые строки (хотя это можно упростить применением умной таблицы).
Способ 2. Функция СУММЕСЛИМН
Если нужно найти именно число (в нашем случае цена как раз число), то вместо ВПР можно использовать функцию СУММЕСЛИМН (SUMIFS), появившуюся начиная с Excel 2007. По идее, эта функция выбирает и суммирует числовые значения по нескольким (до 127!) условиям. Но если в нашем списке нет повторяющихся товаров внутри одного месяца, то она просто выведет значение цены для заданного товара и месяца:
Плюсы: Не нужен дополнительный столбец, решение легко масштабируется на большее количество условий (до 127), быстро считает.
Минусы: Работает только с числовыми данными на выходе, не применима для поиска текста, не работает в старых версиях Excel (2003 и ранее).
Способ 3. Формула массива
О том, как спользовать связку функций ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH) в качестве более мощной альтернативы ВПР я уже подробно описывал (с видео). В нашем же случае, можно применить их для поиска по нескольким столбцам в виде формулы массива. Для этого:
- Выделите пустую зеленую ячейку, где должен быть результат.
- Введите в строке формул в нее следующую формулу:
- Нажмите в конце не Enter, а сочетание Ctrl+Shift+Enter, чтобы ввести формулу не как обычную, а как формулу массива.
Как это на самом деле работает:
Функция ИНДЕКС выдает из диапазона цен C2:C161 содержимое N-ой ячейки по порядку. При этом порядковый номер нужной ячейки нам находит функция ПОИСКПОЗ. Она ищет связку названия товара и месяца (НектаринЯнварь) по очереди во всех ячейках склеенного из двух столбцов диапазона A2:A161&B2:B161 и выдает порядковый номер ячейки, где нашла точное совпадение. По сути, это первый способ, но ключевой столбец создается виртуально прямо внутри формулы, а не в ячейках листа.
Плюсы: Не нужен отдельный столбец, работает и с числами и с текстом.
Минусы: Ощутимо тормозит на больших таблицах (как и все формулы массива, впрочем), особенно если указывать диапазоны «с запасом» или сразу целые столбцы (т.е. вместо A2:A161 вводить A:A и т.д.) Многим непривычны формулы массива в принципе (тогда вам сюда).
Ссылки по теме
- Как искать и подставлять данные с помощью функции ВПР (VLOOKUP)
- Что такое формулы массива и как их использовать
- Как использовать связку функций ИНДЕКС и ПОИСКПОЗ вместо ВПР
- Как извлечь сразу все значения, а не только первое с помощью ВПР