Поиск подстроки в массиве excel

Функции НАЙТИ и ПОИСК в Excel

​Смотрите также​​ другие ячейки или​​.Format = True​​End If​​ Object​ это дело реализовать​Использование аргумента массива таблицы​Орел​

  1. ​(вкладка «​​ A).​​ в той же​100​Когда вы будете довольны​ использовать функцию ВПР.​ условия, которое можно​и нажмите кнопку​НАЙТИ и ПОИСК в Excel
  2. ​ (поиск начался с​​Функция​​ при попытке редактирования,​.MatchCase = False​Loop While res​Dim str1 As​ в access проще,​НАЙТИ и ПОИСК в Excel

    ​ в функции ВПР​​19.04.12​Главная​5​ строке.​1,09​ ВПР, ГПР одинаково​

  3. ​=ВПР(B2;C2:E7,3,ИСТИНА)​​ указать с помощью​​Найти​ позиции 6).​FIND​ устанавливается значение 60.​НАЙТИ и ПОИСК в Excel

    НАЙТИ и ПОИСК в Excel

    ​.MatchWholeWord = False​​End With​ String​ тк sql -рулит,​Markizza​3357​», группа «​

  4. ​=ГПР(«Болты»;A1:C4;4)​1,71​​1,95​​ удобно использовать. Введите​​В этом примере B2​​ функции​.​Урок подготовлен для Вас​(НАЙТИ) и функция​LVL​.MatchWildcards = False​Debug.Print cnt​Dim objWrdDoc As​НАЙТИ и ПОИСК в Excel

    ​ но надо в​​: Господа , Гуру!!!​Орел​

    НАЙТИ и ПОИСК в Excel

    ​Выравнивание​​Поиск слова «Болты» в​Скопируйте всю таблицу и​50​ те же аргументы,​

​ — это первый​Если​
​В поле​
​ командой сайта office-guru.ru​

​SEARCH​

office-guru.ru

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

​: Куда копируете и​​.MatchSoundsLike = False​Udik​ Object​ excel).. HELP!// кому​Перешерстила весь форум,​28.04.12​»).​ строке 1 и​ вставьте ее в​1,29​ но он осуществляет​аргумент​.​Найти​Источник: http://www.excel-easy.com/examples/find-vs-search.html​(ПОИСК) очень похожи​ что пытаетесь редактировать?​.MatchAllWordForms = False​: Ага, спасибо, а​On Error Resume​ не в лом…​

​ на предмет решения​3492​Счет​ возврат значения из​ ячейку A1 пустого​1,71​ поиск в строках​— элемент данных, функция​Для выполнения этой задачи​введите текст —​Перевел: Антон Андронов​ друг на друга.​ файл приложите…​

​End With​ то у меня​ Next​заранее спасибо..​ -не нашла.. только​

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

​Орел​Город​ строки 4, находящейся​

  1. ​ листа Excel.​0​ вместо столбцов. «​

    ​ должна работать. Функции​ используются функции​ или номера —,​

  2. ​Автор: Антон Андронов​​ Этот пример демонстрирует​​У меня считает​​objWrdApp.Selection.Find.Execute Replace:=wdReplaceAll​​ излишне длинно получилось​​ThisWorkbook.VBProject.References.AddFromFile Application.Path &​​аналитика​​ точное сравнение ячеек.​​06.05.12​
    Найдите параметр на ленте

  3. ​Дата выставления счета​​ в том же​​Совет:​Формула​Если вы хотите поэкспериментировать​ ВПР это первый​Если​​ вам нужно найти.​​Примечание:​

    ​ разницу.​​ корректно.​Set objWrdDoc =​

  4. ​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​ Application.PathSeparator & «MSWORD.OLB»​​: там формульно есть​​ Это не много​3316​Самая ранняя счет по​​ столбце (столбец C).​​    Прежде чем вставлять​

  5. ​Описание​​ с функциями подстановки,​​ аргумент — значение,​,​ Или выберите из​Мы стараемся как​Попробуйте использовать функцию​Плюша​

    ​ Nothing​Option Explicit​Set objWrdApp =​ тоже (excel rules!)​​ не то..​​Челябинск​​ городу, с датой​​11​​ данные в Excel,​​Результат​

  6. ​ прежде чем применять​​ которое требуется найти.​​Поиск​​ раскрывающегося списка​​ можно оперативнее обеспечивать​

    ​FIND​​: Файл приложила, хотя​Set objWrdApp =​Public Sub findStr()​ GetObject(, «Word.Application»)​с цветами могут​Суть проблемы:​​25.04.12​​3115​

​=ГПР(3;{1;2;3:»a»;»b»;»c»;»d»;»e»;»f»};2;ИСТИНА)​​ установите для столбцов​=ВПР(1,A2:C10,2)​

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

​ их к собственным​ Этот аргумент может​​и​​Найти​

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

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

​ вас актуальными справочными​(НАЙТИ), чтобы найти​ я начинаю думать,​ Nothing​​Dim objWrdApp As​​If objWrdApp Is​

Примеры ЕСЛИ

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

​ быть проблемы, исправишь​есть столбец А​​3346​​Казань​​Поиск числа 3 в​​ A – С​​Используя приблизительное соответствие, функция​​ данным, то некоторые​

​ быть ссылка на​​ЕЧИСЛО​​последнего поиска.​​ материалами на вашем​

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

support.office.com

Поиск значений с помощью функций ВПР, ИНДЕКС и ПОИСКПОЗ

​ положение подстроки в​​ что это у​End Sub​ Object​ Nothing Then​ сама, у меня​ — со списком​Челябинск​07.04.12​ трех строках константы​ ширину в 250​ ищет в столбце​ образцы данных. Некоторые​ ячейку или фиксированным​.​Примечание:​ языке. Эта страница​ строке. Как видно​ меня руки не​Плюша​Dim str1 As​Set objWrdApp =​

​ 2010 — чё-то​ всевозможных значений (4000705,​28.04.12​=»Казань = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Казань»,$B$2:$B$33,0),1)& «,​ массива и возврат​ пикселей и нажмите​ A значение 1,​ пользователи Excel, такие​ значением, например «строфа»​Примечание:​ В условиях поиска можно​ переведена автоматически, поэтому​ на рисунке, эта​

​ из того места​: Добрый день!​ String​ CreateObject(«Word.Application»)​ булькнул про совместимость,​ 40_0706, 4500707, 4470​

​3372​​ Дата выставления счета:​ значения из строки​ кнопку​

​ находит наибольшее значение,​ как с помощью​

​ или 21,000. Второй​

​ Функция​ использовать подстановочные знаки.​​ ее текст может​​ функция чувствительна к​ растут )))​Подскажите, пожалуйста, как​Dim objWrdDoc As​Set objWrdDoc =​ну это не​ 55 );​Челябинск​ » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Казань»,$B$2:$B$33,0),3),»m/d/yy»)​ 2 того же​Перенос текста​ которое меньше или​ функции ВПР и​ аргумент — это​поиска​Чтобы задать формат для​ содержать неточности и​ регистру.​LVL​

​ найти подстроку (т.е.​ Object​ objWrdApp.Documents.Open(ThisWorkbook.Path & «2.docx»)​ суть, надо было​есть столбец В​01.05.12​3137​ (в данном случае —​(вкладка «​ равняется 1 и​ ГПР; другие пользователи​ диапазон ячеек, C2-:E7,​не учитывается регистр.​ поиска, нажмите кнопку​ грамматические ошибки. Для​Теперь испытайте функцию​: это к вопросу​

​ часть «нефиксированного» текста)​Dim i As​Else​ просто написать строчку​ — в нем​3414​Казань​ третьего) столбца. Константа​Главная​ составляет 0,946, а​ предпочитают с помощью​ в котором выполняется​Примечание:​

Типичный пример использования функции ВПР

​Формат​ нас важно, чтобы​SEARCH​ о пишите в​ в массиве и​ Long, r As​Set objWrdDoc =​ с «Like»​ значения для поиска​

​Челябинск​09.04.12​ массива содержит три​», группа «​ затем возвращает значение​ функций индекс и​ поиск значения, которые​

Попробуйте попрактиковаться

​Мы стараемся как​и внесите нужные​ эта статья была​(ПОИСК), чтобы найти​ ячейке только марку​ в зависимости от​ Word.Range​ objWrdApp.Documents.Open(ThisWorkbook.Path & «2.docx»)​Markizza​ в столбце A​01.05.12​=»Орел = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Орел»,$B$2:$B$33,0),1)& «,​ строки значений, разделенных​Выравнивание​ из столбца B​ ПОИСКПОЗ вместе. Попробуйте​ нужно найти. Третий​

Пример функции ВПР в действии

​ можно оперативнее обеспечивать​ изменения во всплывающем​

​ вам полезна. Просим​​ положение искомого текста​ авто и будет​ этого подставить определенные​On Error Resume​End If​: Ё маё!!!!….. вот​ (705, 707);​​3451​​ Дата выставления счета:​​ точкой с запятой​​»).​​ в той же​​ каждый из методов​

​ аргумент — это​

​ вас актуальными справочными​

​ окне​

​ вас уделить пару​

​ в строке. Эта​

​ счастье, только тогда​

​ значения?​

​ Next​

​str1 = Cells(2,​

​ это гениально!!!! даже​

​берем значение из​

​Челябинск​

​ » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Орел»,$B$2:$B$33,0),3),»m/d/yy»)​

​ (;). Так как​

​Оси​

​ строке.​

​ и посмотрите, какие​

​ столбец в диапазон​

​ материалами на вашем​

​Найти формат​

​ секунд и сообщить,​

​ функция не чувствительна​

​ формулу нужно изменить…​

​Заранее спасибо.​

​ThisWorkbook.VBProject.References.AddFromFile Application.Path &​

​ 1).Value​

​ слов не подберу!..​

​ ячейки В1 и​

​02.05.12​

​3154​

​ «c» было найдено​

​Подшипники​

​2,17​

​ из них подходящий​

​ ячеек, содержащий значение,​ языке. Эта страница​.​ помогла ли она​ к регистру.​Плюша​P.S. Хотелось бы​ Application.PathSeparator & «MSWORD.OLB»​objWrdApp.Visible = True​ логически просто, лаконично​ сравниваем со всеми​

​3467​

​Казань​

​ в строке 2​Болты​=ВПР(1,A2:C10,3,ИСТИНА)​ вариант.​ которое вы поиска.​ переведена автоматически, поэтому​Кнопка​ вам, с помощью​Примечание:​: В том-то и​ выполнить это условие​

​Set objWrdApp =​

​objWrdApp.Activate​

​ и гениально!!!​ значениями из столбца​Челябинск​11.04.12​ того же столбца,​4​

​Используя приблизительное соответствие, функция​

​Скопируйте следующие данные в​

​Четвертый аргумент не является​ ее текст может​Параметры​ кнопок внизу страницы.​Текст «excel» имеет​ проблема, что писать​ без применения макросов,​

​ GetObject(, «Word.Application»)​

​objWrdApp.Selection.Find.ClearFormatting​

​если бы ты​ А, если он​02.05.12​=»Челябинск = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Челябинск»,$B$2:$B$33,0),1)& «,​ что и 3,​4​ ищет в столбце​ пустой лист.​ обязательным. Введите TRUE​ содержать неточности и​служит для задания​

​ Для удобства также​

Пример функции ГПР

​ позицию 11 в​ только марку нельзя,​ но если это​If objWrdApp Is​

​objWrdApp.Selection.Find.Replacement.ClearFormatting​​ знал, как же​ находит значение (например​3474​ Дата выставления счета:​ возвращается «c».​9​ A значение 1,​​Совет:​​ или FALSE. Если​​ грамматические ошибки. Для​​ более подробных условий​​ приводим ссылку на​​ данной строке, даже,​

​ необходимо обязательно гос.​

​ не возможно, то​

​ Nothing Then Set​

​With objWrdApp.Selection.Find​

​ я намудрила с​

​ ищем 705, нашли​

​Челябинск​

​ » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Челябинск»,$B$2:$B$33,0),3),»m/d/yy»)​

​c​

​5​

​ находит наибольшее значение,​

​    Прежде чем вставлять​

​ ввести значение ИСТИНА​

​ нас важно, чтобы​

​ поиска. Например, можно найти​

​ оригинал (на английском​

​ если он используется​ №, если только​ рассмотрю и этот​ objWrdApp = CreateObject(«Word.Application»)​.Text = str1​ этими условиями, это​

​ его в 4000705),​

​04.05.12​

​3191​В этом примере последней​7​ которое меньше или​ данные в Excel,​ или аргумент оставлен​

​ эта статья была​

​ все ячейки, содержащие​

​ языке) .​ немного в другом​ марку, то проблема​ вариант.​Set objWrdDoc =​ ‘ Ищет в​ нечто! что я​ то в соседнем​3490​Казань​ использует функций индекс​

​10​

​ равняется 1 и​

​ установите для столбцов​ пустым, функция возвращает​ вам полезна. Просим​ данных определенного типа,​Предположим, что вы хотите​ регистре («Excel»).​

​ решается быстро при​

​LVL​

​ objWrdApp.Documents.Open(ThisWorkbook.Path & «2.docx»)​ Ворде текст,который нужно.​ только не перебрала!..​ столбце пишем, что​Челябинск​21.04.12​ и ПОИСКПОЗ вместе​6​ составляет 0,946, а​ A – С​ приблизительное значение, указать​ вас уделить пару​ такого как формулы.​ убедиться, что столбец​Функция​ помощи ВПР.​

​: Можно и без​

ИНДЕКС и ПОИСКПОЗ примеры

​str1 = Cells(2,​End With​ а тут оказывается​ он есть, выделяем​05.05.12​=»Нижний Новгород = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Нижний​ для возвращения раннюю​8​ затем возвращает значение​ ширину в 250​ в качестве первого​ секунд и сообщить,​Для поиска на текущем​ содержит текст, не​SEARCH​Но все равно​ макросов, но организация​ 1).Value​Set objWrdDoc =​ вот так все​ другим цветом найденную​3503​ Новгород»,$B$2:$B$33,0),1)& «, Дата​

​ номер счета-фактуры и​11​ из столбца C​ пикселей и нажмите​

​ аргумента. Если ввести​​ помогла ли она​ листе или во​ номера. Или perhapsyou​(ПОИСК) более универсальна.​ спасибо.​ данных «не оптимальна»​​objWrdApp.Visible = True​​ Nothing​​ решается.. мдяяяя…. ну​​ ячейку в столбце​​Челябинск​​ выставления счета: «​

​ его соответствующих даты​

​Формула​

​ в той же​

​ кнопку​ значение FALSE, функция​

​ вам, с помощью​

​ всей книге можно​

​ необходимо найти все​

​ Вы можете использовать​Юрий М​Для того чтобы​

​objWrdApp.Activate​

​Set objWrdApp =​

​ вы, блин, даеете..​

​ А и пишем​08.05.12​ & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Нижний Новгород»,$B$2:$B$33,0),3),»m/d/yy»)​

​ для каждого из​

​Описание​

​ строке.​

​Перенос текста​ будут соответствовать значение​ кнопок внизу страницы.​

​ выбрать в поле​

​ заказы, которые соответствуют​

​ подстановочные символы, когда​

​: Плюша, не цитируйте​ искать значение, его​’ number text​ Nothing​

​а на счет​

​ адрес найденной ячейки,​

​3151​

​3293​ пяти городов. Так​Результат​

​100​

​(вкладка «​

​ в первом аргументе​

​ Для удобства также​

​Искать​

​ определенным Продавец. Если​

​ применяете её.​

​ ВСЁ подряд!!!​

​ нужно сначала вычленить,​

​Set r =​

​End Sub​

​ цветов -это вообще​

​ если не находит,​

​Нижний Новгород​

​Казань​

​ как дата возвращаются​

​=ГПР(«Оси»;A1:C4;2;ИСТИНА)​

​=ВПР(0,7,A2:C10,3,ЛОЖЬ)​

​Главная​

​ предоставить. Другими словами,​

​ приводим ссылку на​

​вариант​

​ у вас нет​

​Примечание:​

​LVL​

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

​ objWrdApp.Selection.Range​

​krosav4ig​

​ не обязательно.. просто​

​ то пишем «не​

​09.04.12​

​25.04.12​

​ в виде числа,​

​Поиск слова «Оси» в​

​Используя точное соответствие, функция​

​», группа «​

​ оставив четвертый аргумент​

​ оригинал (на английском​

​Лист​

​ проблемой верхний или​

​Вопросительный знак (?)​

​: Проблема не в​

​ изменении записи может​

​With r.Duplicate.Find​

​: А хде .execute?​

​ для наглядности..​

​ найден» , и​

​3438​

​=»Москва = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Москва»,$B$2:$B$33,0),1)& «,​

​ мы используем функцию​

​ строке 1 и​

​ ищет в столбце​

​Выравнивание​

​ пустым, или ввести​

​ языке) .​

​или​

​ нижний регистр текста,​

​ соответствует ровно одному​

​ том, что в​

​ быть ошибка​

​.ClearFormatting​

​Udik​

​потестю цацку, позже​

​ переходим к следующему​

​Нижний Новгород​

​ Дата выставления счета:​

​ текст отформатировать его​

​ возврат значения из​

​ A значение 0,7.​

​»).​

​ значение ИСТИНА —​

​Предположим, что у вас​

​Книга​

​ существует несколько способов​

​ символу. Звездочка (*)​

​ ячейке кроме марки​

​k61​

​Do While .Execute(str1,​

​: Спасибо, с .execute​

​ напишу по этому​

​ значению столбца В,​

Дополнительные сведения о функциях поиска

  • ​02.05.12​ » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Москва»,$B$2:$B$33,0),3),»m/d/yy»)​

  • ​ как дату. Результат​ строки 2, находящейся​

  • ​ Поскольку точного соответствия​Плотность​

support.office.com

Поиск подстроки в столбце Excel

​ обеспечивает гибкость.​​ есть списка номеров​
​.​ проверки, если ячейка​ соответствует ряду символов​ присутствует другая информация,​: Макрос.​ False, False, Wrap:=wdFindStop)​
​ разобрался, осталось понять​
​ поводу .. *ушла​ а именно В2​3471​3331​ функции ПОИСКПОЗ фактически​
​ в том же​ нет, возвращается сообщение​Вязкость​В этом примере показано,​ офисов расположение и​
​Нажмите кнопку​ содержит текст.​ (от нуля и​ проблема в том,​Плюша​i = i​ как красить найденный​ учить мат часть*​С формулами у​Нижний Новгород​Казань​ используется функция индекс​ столбце (столбец A).​ об ошибке.​Температура​ как работает функция.​ вам нужно знать,​Найти все​Для поиска текста можно​ более).​ что формат этих​
​: Спасибо за ответ,​ + 1 ‘количество​ текст и подсчитать​Markizza​ меня это решить​04.05.12​27.04.12​ аргументом. Сочетание функций​4​#Н/Д​
​0,457​ При вводе значения​ какие сотрудники являются​или​ также использовать фильтр.​Еще одна интересная особенность​ данных меняется. В​ но формула не​ вхождений​ количество вхождений.​: в процессе тестирования​ не получилось (ГПР,​3160​3350​ индекс и ПОИСКПОЗ​=ГПР(«Подшипники»;A1:C4;3;ЛОЖЬ)​=ВПР(0,1,A2:C10,2,ИСТИНА)​
​3,55​

​ в ячейке B2​​ в каждой программы​Найти далее​
​ Дополнительные сведения см.​ функций​ таком ключе удобнее​ срабатывает на грузовые​Loop​
​.​ выявлено, что поиск​ ВПР — поскольку​Москва​

​Казань​​ используются два раза​Поиск слова «Подшипники» в​Используя приблизительное соответствие, функция​500​ (первый аргумент) функция​
​ office. Электронную таблицу​.​ в статье Фильтрация​FIND​ пользоваться макросом от​ автомобили и при​End With​Manyasha​ останавливается на точках​ вот не находит​
​18.04.12​28.04.12​ в каждой формуле​ строке 1 и​
​ ищет в столбце​0,525​ ВПР ищет ячейки​ огромный, поэтому вы​

​Найти все​​ данных.​(НАЙТИ) и​ к61, который ищет​

CyberForum.ru

Поиск подстроки вв вордде из экселя (поиск определенного текста в файле docx из экселя)

​ полном соответстии текста​​’ end number​:​Udik​ в 4000705 значение​3328​3390​
​ — сначала получить​ возврат значения из​ A значение 0,1.​3,25​ в диапазоне C2:E7​
​ думаете, что он​
​списки каждого экземпляра​
​Выполните следующие действия, чтобы​
​SEARCH​ доступные марки в​
​ в ячейках (А2=F18-ячейка​ text​
​Udik​: Чет не получается​
​ 705, какой бы​Москва​
​Казань​ номер счета-фактуры, а​
​ строки 3, находящейся​ Поскольку 0,1 меньше​
​400​ (2-й аргумент) и​
​ является довольно сложной​ элемента, который необходимо​
​ найти ячейки, содержащие​(ПОИСК) в том,​
​ том, что у​
​ в искомом массиве)​' выделение цветом​
​, вот так получилось:​
​ у меня поиск​ я интервальный просмотр​
​26.04.12​
​01.05.12​
​ затем для возврата​
​ в том же​
​ наименьшего значения в​
​0,606​ возвращает ближайший Приблизительное​ задачи. Это задача несложная​
​ найти, и позволяет​
​ определенный текст.​ что они имеют​
​ вас в ячейке​ тоже. Т.е. всегда​
​objWrdApp.Selection.Find.ClearFormatting​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>With objWrdApp.Selection.Find​​ подстрок. По идее​

​ не ставила, хоть​​3368​3441​ даты.​ столбце (столбец B).​ столбце A, возвращается​:)​2,93​

​ совпадение с третьего​​ делать с помощью​​ сделать активной ячейки,​​Выделите диапазон ячеек, среди​
​ 3-й дополнительный аргумент.​
​Плюша​ выдает значение 60.​objWrdApp.Selection.Find.Replacement.ClearFormatting​
​.Text = "test"​
​ должно выделять найденные​
​ ты тресни). О_о​
​Москва​
​Казань​
​Скопируйте всю таблицу и​
​7​
​ сообщение об ошибке.​300​
​ столбца в диапазоне,​
​ функции поиска.​
​ выбрав нужное вхождение.​
​ которых требуется осуществить​

​ Вы можете использовать​​: Я как раз​LVL​Options.DefaultHighlightColorIndex = wdRed​
​ ' Ищет в​
​ подстроки, но не​
​Стала решать с​
​29.04.12​02.05.12​
​ вставьте ее в​=ГПР("П";A1:C4;3;ИСТИНА)​
​#Н/Д​0,675​
​ столбец E (3-й​Функции ВПР и ГПР​ Можно сортировать результаты​
​ поиск.​ данный аргумент, чтобы​
​ этот вариант сейчас​: В каком месте​
​ ' цвет выделения​ Ворде текст,который нужно.​
​ выходит.​ помощью макроса.. Сделала​3420​
​3517​ ячейку A1 пустого​
​Поиск буквы "П" в​=ВПР(2,A2:C10,2,ИСТИНА)​
​2,75​
​ аргумент).​
​ вместе с функций​
​Найти​Чтобы выполнить поиск по​
​ задать позицию (начиная​
​ рассматриваю.​
​ она не срабатывает?​With objWrdApp.Selection.Find​
​Do​Вообще нужно найденное​ кнопку.. стала описывать​
​Москва​
​Казань​
​ листа Excel.​ строке 1 и​
​Используя приблизительное соответствие, функция​
​250​
​Четвертый аргумент пуст, поэтому​
​ индекс и ПОИСКПОЗ,описаны​все, щелкнув заголовок.​
​ всему листу, щелкните​
​ слева), с которой​Kuzmich​Плюша​
​.Text = str1​res = .Execute​
​ выделить цветом и​
​ поиск подстроки (цикла​
​01.05.12​
​08.05.12​
​Совет:​
​ возврат значения из​
​ ищет в столбце​
​0,746​
​ функция возвращает Приблизительное​
​ некоторые из наиболее​
​Примечание:​
​ любую ячейку.​ нужно начать поиск.​
​: Если к марке​: Прошу прощения, может​
​ ' Ищет в​

excelworld.ru

Поиск подстроки в массиве

​If res Then​​ подсчитать количество вхождений.​
​ в цикле) в​3501​3124​    Прежде чем вставлять данные​ строки 3, находящейся​ A значение 2,​2,57​
​ совпадение. Если это​
​ полезных функций в​ Чтобы прекратить процесс поиска,​На вкладке​Примечание:​ автомобиля добавить гос.​ я, конечно, не​ Ворде текст,который нужно.​

​’Заливка​​ У меня пока​ массиве и совсем​Москва​;)
​Орел​ в Excel, установите​ в том же​ находит наибольшее значение,​200​ не так, вам​;)

​ Microsoft Excel.​​ нажмите клавишу ESC.​

​Главная​​Строка «o» найдена​ номер в таблице,​ правильно Вас поняла.​.Replacement.Text = str1’​objWrdApp.Selection.Shading.BackgroundPatternColor = wdColorYellow​ даже не ищет.​ запуталась.. а оптимизировать​06.05.12​09.04.12​

​ для столбцов A​​ столбце. Так как​ которое меньше или​

​0,835​​ придется введите одно​Примечание:​Для выполнения этой задачи​в группе​ в позиции 5.​то поиск можно​ При открытии файла​ текст для замены​’Выделение​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​

​ свой рабочий процесс​​Краткий справочник: обзор функции​3155​ – D ширину​
​ «П» найти не​ равняется 2 и​

​2,38​​ из значений в​ Функция мастер подстановок больше​ используется функция​Редактирование​Примечание:​ осуществлять по этому​

​ искомое значение выставлено​​.Replacement.Highlight = True​’objWrdApp.Selection.Range.HighlightColorIndex = wdRed​Option Explicit​ ооооочень хочется.. ибо​ ВПР​Орел​;)

​ в 250 пикселей​​ удалось, возвращается ближайшее​ составляет 1,29, а​150​ столбцах C и​ не доступен в​ЕТЕКСТ​нажмите кнопку​Строка «o» найдена​
​ номеру. См. файл.​ правильно, но при​

​.Forward = True​​cnt = cnt​Public Sub findStr()​

​ объемы информации очень​​Функции ссылки и поиска​11.04.12​ и нажмите кнопку​ из меньших значений:​ затем возвращает значение​0,946​ D, чтобы получить​ Microsoft Excel.​.​Найти и выделить​ в позиции 7​Запустите макрос Nomer().​ копировании формулы в​:)

​.Wrap = wdFindContinue​​ + 1​Dim objWrdApp As​ большие.. (конечно все​

​ (справка)​​3177​Перенос текста​ «Оси» (в столбце​
​ из столбца B​2,17​ результат вообще.​
​Вот пример того, как​

planetaexcel.ru

​Для возвращения результатов для​

Skip to content

5 способов – поиск значения в массиве Excel

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

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

  • Поиск в массиве при помощи ИНДЕКС ПОИСКПОЗ
  • Формула ВПР и ПОИСКПОЗ для поиска в диапазоне
  • Функция ПРОСМОТРX для поиска в строках и столбцах
  • Формула СУММПРОИЗВ для поиска по строке и столбцу
  • Поиск в матрице с именованными диапазонами

Поиск в массиве при помощи ИНДЕКС ПОИСКПОЗ

Самый популярный способ выполнить двусторонний поиск в Excel — использовать комбинацию ИНДЕКС с двумя ПОИСКПОЗ. Это разновидность классической формулы ПОИСКПОЗ ИНДЕКС , к которой вы добавляете еще одну функцию ПОИСКПОЗ, чтобы получить номера строк и столбцов:

ИНДЕКС( массив_данных ; ПОИСКПОЗ( значение_вертикальное ;  диапазон_поиска_столбец ; 0), ПОИСКПОЗ( значение_горизонтальное ;  диапазон_поиска_строка ; 0))

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

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

  • Массив_данных — B2:E11 (ячейки данных, не включая заголовки строк и столбцов)
  • Значение_вертикальное — H1 (целевой товар)
  • Диапазон_поиска_столбец – A2:A11 (заголовки строк: названия напитков)
  • Значение_горизонтальное — H2 (целевой период)
  • Диапазон_поиска_строка — B1:E1 (заголовки столбцов: временные периоды)

Соедините все аргументы вместе, и вы получите следующую формулу для поиска числа в диапазоне:

=ИНДЕКС(B2:E11; ПОИСКПОЗ(H1;A2:A11;0); ПОИСКПОЗ(H2;B1:E1;0))

Как работает эта формула?

Хотя на первый взгляд это может показаться немного сложным, логика здесь простая. Функция ИНДЕКС извлекает значение из массива данных на основе номеров строк и столбцов, а две функции ПОИСКПОЗ предоставляют ей эти номера:

ИНДЕКС( B2:E11; номер_строки ; номер_столбца )

Здесь мы используем способность ПОИСКПОЗ возвращать относительную позицию значения в искомом массиве .

Итак, чтобы получить номер строки, мы ищем нужный нам товар (H1) в заголовках строк (A2:A11):

ПОИСКПОЗ(H1;A2:A11;0)

Чтобы получить номер столбца, мы ищем нужную нам неделю (H2) в заголовках столбцов (B1:E1):

ПОИСКПОЗ(H2;B1:E1;0)

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

В этом примере первое ПОИСКПОЗ возвращает 2, потому что нужный товар (Sprite) находится в ячейке A3, которая является второй по счёту в диапазоне ​​A2:A11. Второй ПОИСКПОЗ возвращает 3, так как «Неделя 3» находится в ячейке D1, которая является третьей ячейкой в ​​B1:E1.

С учетом вышеизложенного формула сводится к:

ИНДЕКС(B2:E11; 2 ; 3 )

Она возвращает число на пересечении второй строки и третьего столбца в матрице B2:E4, то есть в ячейке D3.

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

Формула ВПР и ПОИСКПОЗ для поиска в диапазоне

Другой способ выполнить матричный поиск в Excel — использовать комбинацию функций ВПР и ПОИСКПОЗ:

ВПР( значение_вертикальное ; массив_данных ; ПОИСКПОЗ( значение_горизонтальное , диапазон_поиска_строка , 0), ЛОЖЬ)

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

=ВПР(H1; A2:E11; ПОИСКПОЗ(H2;A1:E1;0); ЛОЖЬ)

Где:

  • Массив_данных — B2:E11 (ячейки данных, не включая заголовки строк и столбцов)
  • Значение_вертикальное — H1 (целевой товар)
  • Значение_горизонтальное — H2 (целевой период)
  • Диапазон_поиска_строка — А1:E1 (заголовки столбцов: временные периоды)

Основой формулы является функция ВПР, настроенная на точное совпадение (последний аргумент имеет значение ЛОЖЬ). Она ищет заданное значение (H1) в первом столбце массива (A2:E11) и возвращает данные из другого столбца в той же строке. Чтобы определить, из какого столбца вернуть значение, вы используете функцию ПОИСКПОЗ, которая также настроена на точное совпадение (последний аргумент равен 0):

ПОИСКПОЗ(H2;A1:E1;0)

ПОИСКПОЗ ищет текст из H2 в заголовках столбцов (A1:E1) и указывает относительное положение найденной ячейки. В нашем случае нужная неделя (3-я) находится в D1, которая является четвертой по счету в  массиве поиска. Итак, число 4 идет в аргумент номер_столбца функции ВПР:

=ВПР(H1; A2:E11; 4; ЛОЖЬ)

Далее ВПР находит точное совпадение H1 со значением в A3 и возвращает значение из 4-го столбца в той же строке, то есть из ячейки D3.

Важное замечаниеЧтобы формула работала корректно, диапазон_поиска (A2:E11) функции ВПР и диапазон_поиска (A1:E1) функции ПОИСКПОЗ должны иметь одинаковое количество столбцов. Иначе число, переданное в номер_столбца, будет неправильным (не будет соответствовать положению столбца в массиве данных).

Функция ПРОСМОТРX для поиска в строках и столбцах

Недавно Microsoft представила еще одну функцию в Excel, которая призвана заменить все существующие функции поиска, такие как ВПР, ГПР и ИНДЕКС+ПОИСКПОЗ. Помимо прочего, ПРОСМОТРX может смотреть на пересечение определенной строки и столбца:

ПРОСМОТРX( значение_вертикальное ; диапазон_поиска_столбец ; ПРОСМОТРX( значение_горизонтальное ; диапазон_поиска_строка ; массив_данных ))

Для нашего примера набора данных формула выглядит следующим образом:

=ПРОСМОТРX(H1; A2:A11; ПРОСМОТРX(H2; B1:E1; B2:E11))

Примечание. В настоящее время ПРОСМОТРX — это функция, доступная только подписчикам Office 365 и более поздних версий.

В формуле используется функция ПРОСМОТРX для возврата всей строки или столбца. Внутренняя функция ищет целевой период времени в строке заголовка и возвращает все значения для этой недели (в данном примере для 3-й). Эти значения переходят в аргумент возвращаемый_массив внешнего ПРОСМОТРX:

=ПРОСМОТРX(H1; A2:A11; {544:87:488:102:87:433:126:132:111:565})

Внешняя функция ПРОСМОТРX ищет нужный товар в заголовках столбцов и извлекает значение из той же позиции из возвращаемого_массива.

Формула СУММПРОИЗВ для поиска по строке и столбцу

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

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

СУММПРОИЗВ ( диапазон_поиска_столбец = значение_вертикальное ) * ( диапазон_поиска_строка = значение_горизонтальное), массив_данных )

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

=СУММПРОИЗВ((A2:A11=H1)*(B1:E1=H2); B2:E11)

Приведенный ниже вариант также будет работать:

=СУММПРОИЗВ((A2:A11=H1)*(B1:E1=H2)*B2:E11)

Теперь поясним подробнее. В начале мы сравниваем два значения поиска с заголовками строк и столбцов (целевой товар в H1 со всеми наименованиями в A2: A11 и целевой период времени в H2 со всеми неделями в B1: E1):

(A2:A11=H1)*(B1:E1=H2)

Это дает нам два массива значений ИСТИНА и ЛОЖЬ, где ИСТИНА означает совпадения:

{ЛОЖЬ:ИСТИНА:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ:ЛОЖЬ}) * ({ЛОЖЬ;ЛОЖЬ;ИСТИНА;ЛОЖЬ}

Операция умножения преобразует значения ИСТИНА и ЛОЖЬ в 1 и 0 и создает матрицу из 4 столбцов и 10 строк (строки разделяются двоеточием, а каждый столбец данных — точкой с запятой):

{0;0;0;0:0;0;1;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0}

Функция СУММПРОИЗВ умножает элементы приведенного выше массива на элементы B2:E4, находящихся в тех же позициях:

{0;0;0;0:0;0;1;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0; 0;0:0;0;0;0:0;0;0;0:0;0;0;0} * {455;345;544;366:65;77;87;56:766; 655;488;865:129;66;102;56:89;141;87;89:566;511;433;522:154; 144;126; 162:158;165;132;155:112;143;111; 125:677;466;565;766})

И поскольку умножение на ноль дает в результате ноль, остается только элемент, соответствующий 1 в первом массиве:

=СУММПРОИЗВ({0;0;0;0:0;0;87;0:0;0;0;0:0;0;0;0:0;0;0;0:0; 0;0;0:0;0;0;0:0;0;0;0:0;0;0;0:0;0;0;0})

Наконец, СУММПРОИЗВ складывает все элементы результирующего массива и возвращает значение 87.

Примечание . Если в вашей таблице несколько заголовков строк и/или столбцов с одинаковыми именами, итоговый массив будет содержать более одного числа, отличного от нуля. И все эти числа будут суммированы. В результате вы получите сумму значений, удовлетворяющую обоим критериям. Это то, что отличает формулу СУММПРОИЗВ от ПОИСКПОЗ и ВПР, которые возвращают только первое найденное совпадение.

Поиск в матрице с именованными диапазонами

Еще один достаточно простой способ поиска в массиве в Excel — использование именованных диапазонов. Рассмотрим пошагово:

Шаг 1. Назовите столбцы и строки

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

  1. Выделите всю таблицу (в нашем случае A1:E11).
  2. На вкладке « Формулы » в группе « Определенные имена » щелкните « Создать из выделенного » или нажмите комбинацию клавиш  Ctrl + Shift + F3.
  3. В диалоговом окне « Создание имени из выделенного » выберите « в строке выше » и « в столбце слева» и нажмите «ОК».

Это автоматически создает имена на основе заголовков строк и столбцов. Однако есть пара предостережений:

  • Если ваши заголовки столбцов и/или строк являются числами или содержат определенные символы, которые не разрешены в именах Excel, то имена для таких столбцов и строк не будут созданы. Чтобы просмотреть список созданных имен, откройте Диспетчер имен (Ctrl + F3). Если некоторые имена отсутствуют, определите их вручную.
  • Если некоторые из ваших заголовков строк или столбцов содержат пробелы, то они будут заменены символами подчеркивания, например, Неделя_1.

Шаг 2. Создание формулы поиска по матрице

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

=имя_строки имя_столбца

Или наоборот:

=имя_столбца имя_строки

Например, чтобы получить продажу Sprite в 3-й неделе, используйте выражение:

=Sprite неделя_3

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

Если кому-то нужны более подробные инструкции, опишем весь процесс пошагово:

  1. В ячейке, в которой вы хотите отобразить результат, введите знак равенства (=).
  2. Начните вводить имя целевой строки, Sprite. После того, как вы введете пару символов, Excel отобразит все существующие имена, соответствующие вашему вводу. Дважды щелкните нужное имя, чтобы ввести его в формулу.
  3. После имени строки введите пробел , который в данном случае работает как оператор пересечения.
  4. Введите имя целевого столбца ( в нашем случае неделя_3 ).
  5. Как только будут введены имена строки и столбца, Excel выделит соответствующую строку и столбец в вашей таблице, и вы нажмете Enter, чтобы завершить ввод:

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

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

Еще несколько материалов по теме:

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

Поиск значений в списке данных

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

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

Что необходимо сделать

  • Точное совпадение значений по вертикали в списке

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

  • Подстановка значений по вертикали в списке неизвестного размера с использованием точного совпадения

  • Точное совпадение значений по горизонтали в списке

  • Подыыывка значений по горизонтали в списке с использованием приблизительного совпадения

  • Создание формулы подступа с помощью мастера подметок (только в Excel 2007)

Точное совпадение значений по вертикали в списке

Для этого можно использовать функцию ВLOOKUP или сочетание функций ИНДЕКС и НАЙТИПОЗ.

Примеры ВРОТ

Пример 1 функции ВПР

Пример 2 функции ВПР

Дополнительные сведения см. в этой информации.

Примеры индексов и совпадений

Функции ИНДЕКС и ПОИСКПОЗ можно использовать вместо функции ВПР

Что означает:

=ИНДЕКС(нужно вернуть значение из C2:C10, которое будет соответствовать ПОИСКПОЗ(первое значение «Капуста» в массиве B2:B10))

Формула ищет в C2:C10 первое значение, соответствующее значению «Ольга» B7), и возвращает значение в C7(100),которое является первым значением, которое соответствует значению «Ольга».

Дополнительные сведения см. в функциях ИНДЕКС иФУНКЦИЯ MATCH.

К началу страницы

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

Для этого используйте функцию ВЛВП.

Важно:  Убедитесь, что значения в первой строке отсортировали в порядке возрастания.

Пример формулы ВЛП, которая ищет приблизительное совпадение

В примере выше ВРОТ ищет имя учащегося, у которого 6 просмотров в диапазоне A2:B7. В таблице нет записи для 6 просмотров, поэтому ВРОТ ищет следующее самое высокое совпадение меньше 6 и находит значение 5, связанное с именем Виктор,и таким образом возвращает Его.

Дополнительные сведения см. в этой информации.

К началу страницы

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

Для этого используйте функции СМЕЩЕНИЕ и НАЙТИВМЕСЯК.

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

Пример функций OFFSET и MATCH

C1 — это левые верхние ячейки диапазона (также называемые начальной).

MATCH(«Оранжевая»;C2:C7;0) ищет «Оранжевые» в диапазоне C2:C7. В диапазон не следует включать запускаемую ячейку.

1 — количество столбцов справа от начальной ячейки, из которых должно быть возвращено значение. В нашем примере возвращается значение из столбца D, Sales.

К началу страницы

Точное совпадение значений по горизонтали в списке

Для этого используйте функцию ГГПУ. См. пример ниже.

Пример формулы ГВП, которая ищет точное совпадение

Г ПРОСМОТР ищет столбец «Продажи» и возвращает значение из строки 5 в указанном диапазоне.

Дополнительные сведения см. в сведениях о функции Г ПРОСМОТР.

К началу страницы

Подыыывка значений по горизонтали в списке с использованием приблизительного совпадения

Для этого используйте функцию ГГПУ.

Важно:  Убедитесь, что значения в первой строке отсортировали в порядке возрастания.

Пример формулы ГВП, которая ищет приблизительное совпадение

В примере выше ГЛЕБ ищет значение 11000 в строке 3 указанного диапазона. Она не находит 11000, поэтому ищет следующее наибольшее значение меньше 1100 и возвращает значение 10543.

Дополнительные сведения см. в сведениях о функции Г ПРОСМОТР.

К началу страницы

Создание формулы подступа с помощью мастера подметок (толькоExcel 2007 )

Примечание: В Excel 2010 больше не будет надстройки #x0. Эта функция была заменена мастером функций и доступными функциями подменю и справки (справка).

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

  1. Щелкните ячейку в диапазоне.

  2. На вкладке Формулы в группе Решения нажмите кнопку Под поиск.

  3. Если команда Подытов недоступна, вам необходимо загрузить мастер под надстройка подытогов.

    Загрузка надстройки «Мастер подстройок»

  4. Нажмите кнопку Microsoft Office Изображение кнопки Office , выберите Параметры Excel и щелкните категорию Надстройки.

  5. В поле Управление выберите элемент Надстройки Excel и нажмите кнопку Перейти.

  6. В диалоговом окне Доступные надстройки щелкните рядом с полем Мастер подстрок инажмите кнопку ОК.

  7. Следуйте инструкциям мастера.

К началу страницы

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

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

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

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

ИНДЕКС и ПОИСКПОЗ в Excel

  • Базовая информация об ИНДЕКС и ПОИСКПОЗ
  • Используем функции ИНДЕКС и ПОИСКПОЗ в Excel
  • Преимущества ИНДЕКС и ПОИСКПОЗ перед ВПР
  • ИНДЕКС и ПОИСКПОЗ – примеры формул
    • Как находить значения, которые находятся слева
    • Вычисления при помощи ИНДЕКС и ПОИСКПОЗ
    • Поиск по известным строке и столбцу
    • Поиск по нескольким критериям
    • ИНДЕКС и ПОИСКПОЗ в сочетании с ЕСЛИОШИБКА

Содержание

  1. Базовая информация об ИНДЕКС и ПОИСКПОЗ
  2. ИНДЕКС – синтаксис и применение функции
  3. ПОИСКПОЗ – синтаксис и применение функции
  4. Как использовать ИНДЕКС и ПОИСКПОЗ в Excel
  5. Почему ИНДЕКС/ПОИСКПОЗ лучше, чем ВПР?
  6. 4 главных преимущества использования ПОИСКПОЗ/ИНДЕКС в Excel:
  7. ИНДЕКС и ПОИСКПОЗ – примеры формул
  8. Как выполнить поиск с левой стороны, используя ПОИСКПОЗ и ИНДЕКС
  9. Вычисления при помощи ИНДЕКС и ПОИСКПОЗ в Excel (СРЗНАЧ, МАКС, МИН)
  10. О чём нужно помнить, используя функцию СРЗНАЧ вместе с ИНДЕКС и ПОИСКПОЗ
  11. Как при помощи ИНДЕКС и ПОИСКПОЗ выполнять поиск по известным строке и столбцу
  12. Поиск по нескольким критериям с ИНДЕКС и ПОИСКПОЗ
  13. ИНДЕКС и ПОИСКПОЗ в сочетании с ЕСЛИОШИБКА в Excel

Базовая информация об ИНДЕКС и ПОИСКПОЗ

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

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

ИНДЕКС – синтаксис и применение функции

Функция INDEX (ИНДЕКС) в Excel возвращает значение из массива по заданным номерам строки и столбца. Функция имеет вот такой синтаксис:

INDEX(array,row_num,[column_num])
ИНДЕКС(массив;номер_строки;[номер_столбца])

Каждый аргумент имеет очень простое объяснение:

  • array (массив) – это диапазон ячеек, из которого необходимо извлечь значение.
  • row_num (номер_строки) – это номер строки в массиве, из которой нужно извлечь значение. Если не указан, то обязательно требуется аргумент column_num (номер_столбца).
  • column_num (номер_столбца) – это номер столбца в массиве, из которого нужно извлечь значение. Если не указан, то обязательно требуется аргумент row_num (номер_строки)

Если указаны оба аргумента, то функция ИНДЕКС возвращает значение из ячейки, находящейся на пересечении указанных строки и столбца.

Вот простейший пример функции INDEX (ИНДЕКС):

=INDEX(A1:C10,2,3)
=ИНДЕКС(A1:C10;2;3)

Формула выполняет поиск в диапазоне A1:C10 и возвращает значение ячейки во 2-й строке и 3-м столбце, то есть из ячейки C2.

Очень просто, правда? Однако, на практике Вы далеко не всегда знаете, какие строка и столбец Вам нужны, и поэтому требуется помощь функции ПОИСКПОЗ.

ПОИСКПОЗ – синтаксис и применение функции

Функция MATCH (ПОИСКПОЗ) в Excel ищет указанное значение в диапазоне ячеек и возвращает относительную позицию этого значения в диапазоне.

Например, если в диапазоне B1:B3 содержатся значения New-York, Paris, London, тогда следующая формула возвратит цифру 3, поскольку «London» – это третий элемент в списке.

=MATCH("London",B1:B3,0)
=ПОИСКПОЗ("London";B1:B3;0)

Функция MATCH (ПОИСКПОЗ) имеет вот такой синтаксис:

MATCH(lookup_value,lookup_array,[match_type])
ПОИСКПОЗ(искомое_значение;просматриваемый_массив;[тип_сопоставления])

  • lookup_value (искомое_значение) – это число или текст, который Вы ищите. Аргумент может быть значением, в том числе логическим, или ссылкой на ячейку.
  • lookup_array (просматриваемый_массив) – диапазон ячеек, в котором происходит поиск.
  • match_type (тип_сопоставления) – этот аргумент сообщает функции ПОИСКПОЗ, хотите ли Вы найти точное или приблизительное совпадение:
    • 1 или не указан – находит максимальное значение, меньшее или равное искомому. Просматриваемый массив должен быть упорядочен по возрастанию, то есть от меньшего к большему.
    • 0 – находит первое значение, равное искомому. Для комбинации ИНДЕКС/ПОИСКПОЗ всегда нужно точное совпадение, поэтому третий аргумент функции ПОИСКПОЗ должен быть равен 0.
    • -1 – находит наименьшее значение, большее или равное искомому значению. Просматриваемый массив должен быть упорядочен по убыванию, то есть от большего к меньшему.

На первый взгляд, польза от функции ПОИСКПОЗ вызывает сомнение. Кому нужно знать положение элемента в диапазоне? Мы хотим знать значение этого элемента!

Позвольте напомнить, что относительное положение искомого значения (т.е. номер строки и/или столбца) – это как раз то, что мы должны указать для аргументов row_num (номер_строки) и/или column_num (номер_столбца) функции INDEX (ИНДЕКС). Как Вы помните, функция ИНДЕКС может возвратить значение, находящееся на пересечении заданных строки и столбца, но она не может определить, какие именно строка и столбец нас интересуют.

Как использовать ИНДЕКС и ПОИСКПОЗ в Excel

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

Ещё не совсем понятно? Представьте функции ИНДЕКС и ПОИСКПОЗ в таком виде:

=INDEX(столбец из которого извлекаем,(MATCH (искомое значение,столбец в котором ищем,0))
=ИНДЕКС(столбец из которого извлекаем;(ПОИСКПОЗ(искомое значение;столбец в котором ищем;0))

Думаю, ещё проще будет понять на примере. Предположим, у Вас есть вот такой список столиц государств:

ИНДЕКС и ПОИСКПОЗ в Excel

Давайте найдём население одной из столиц, например, Японии, используя следующую формулу:

=INDEX($D$2:$D$10,MATCH("Japan",$B$2:$B$10,0))
=ИНДЕКС($D$2:$D$10;ПОИСКПОЗ("Japan";$B$2:$B$10;0))

Теперь давайте разберем, что делает каждый элемент этой формулы:

  • Функция MATCH (ПОИСКПОЗ) ищет значение «Japan» в столбце B, а конкретно – в ячейках B2:B10, и возвращает число 3, поскольку «Japan» в списке на третьем месте.
  • Функция INDEX (ИНДЕКС) использует 3 для аргумента row_num (номер_строки), который указывает из какой строки нужно возвратить значение. Т.е. получается простая формула:

    =INDEX($D$2:$D$10,3)
    =ИНДЕКС($D$2:$D$10;3)

    Формула говорит примерно следующее: ищи в ячейках от D2 до D10 и извлеки значение из третьей строки, то есть из ячейки D4, так как счёт начинается со второй строки.

Вот такой результат получится в Excel:

ИНДЕКС и ПОИСКПОЗ в Excel

Важно! Количество строк и столбцов в массиве, который использует функция INDEX (ИНДЕКС), должно соответствовать значениям аргументов row_num (номер_строки) и column_num (номер_столбца) функции MATCH (ПОИСКПОЗ). Иначе результат формулы будет ошибочным.

Стоп, стоп… почему мы не можем просто использовать функцию VLOOKUP (ВПР)? Есть ли смысл тратить время, пытаясь разобраться в лабиринтах ПОИСКПОЗ и ИНДЕКС?

=VLOOKUP("Japan",$B$2:$D$2,3)
=ВПР("Japan";$B$2:$D$2;3)

В данном случае – смысла нет! Цель этого примера – исключительно демонстрационная, чтобы Вы могли понять, как функции ПОИСКПОЗ и ИНДЕКС работают в паре. Последующие примеры покажут Вам истинную мощь связки ИНДЕКС и ПОИСКПОЗ, которая легко справляется с многими сложными ситуациями, когда ВПР оказывается в тупике.

Почему ИНДЕКС/ПОИСКПОЗ лучше, чем ВПР?

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

Далее я попробую изложить главные преимущества использования ПОИСКПОЗ и ИНДЕКС в Excel, а Вы решите – остаться с ВПР или переключиться на ИНДЕКС/ПОИСКПОЗ.

4 главных преимущества использования ПОИСКПОЗ/ИНДЕКС в Excel:

1. Поиск справа налево. Как известно любому грамотному пользователю Excel, ВПР не может смотреть влево, а это значит, что искомое значение должно обязательно находиться в крайнем левом столбце исследуемого диапазона. В случае с ПОИСКПОЗ/ИНДЕКС, столбец поиска может быть, как в левой, так и в правой части диапазона поиска. Пример: Как находить значения, которые находятся слева покажет эту возможность в действии.

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

Например, если у Вас есть таблица A1:C10, и требуется извлечь данные из столбца B, то нужно задать значение 2 для аргумента col_index_num (номер_столбца) функции ВПР, вот так:

=VLOOKUP("lookup value",A1:C10,2)
=ВПР("lookup value";A1:C10;2)

Если позднее Вы вставите новый столбец между столбцами A и B, то значение аргумента придется изменить с 2 на 3, иначе формула возвратит результат из только что вставленного столбца.

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

3. Нет ограничения на размер искомого значения. Используя ВПР, помните об ограничении на длину искомого значения в 255 символов, иначе рискуете получить ошибку #VALUE! (#ЗНАЧ!). Итак, если таблица содержит длинные строки, единственное действующее решение – это использовать ИНДЕКС/ПОИСКПОЗ.

Предположим, Вы используете вот такую формулу с ВПР, которая ищет в ячейках от B5 до D10 значение, указанное в ячейке A2:

=VLOOKUP(A2,B5:D10,3,FALSE)
=ВПР(A2;B5:D10;3;ЛОЖЬ)

Формула не будет работать, если значение в ячейке A2 длиннее 255 символов. Вместо неё Вам нужно использовать аналогичную формулу ИНДЕКС/ПОИСКПОЗ:

=INDEX(D5:D10,MATCH(TRUE,INDEX(B5:B10=A2,0),0))
=ИНДЕКС(D5:D10;ПОИСКПОЗ(ИСТИНА;ИНДЕКС(B5:B10=A2;0);0))

4. Более высокая скорость работы. Если Вы работаете с небольшими таблицами, то разница в быстродействии Excel будет, скорее всего, не заметная, особенно в последних версиях. Если же Вы работаете с большими таблицами, которые содержат тысячи строк и сотни формул поиска, Excel будет работать значительно быстрее, при использовании ПОИСКПОЗ и ИНДЕКС вместо ВПР. В целом, такая замена увеличивает скорость работы Excel на 13%.

Влияние ВПР на производительность Excel особенно заметно, если рабочая книга содержит сотни сложных формул массива, таких как ВПР+СУММ. Дело в том, что проверка каждого значения в массиве требует отдельного вызова функции ВПР. Поэтому, чем больше значений содержит массив и чем больше формул массива содержит Ваша таблица, тем медленнее работает Excel.

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

ИНДЕКС и ПОИСКПОЗ – примеры формул

Теперь, когда Вы понимаете причины, из-за которых стоит изучать функции ПОИСКПОЗ и ИНДЕКС, давайте перейдём к самому интересному и увидим, как можно применить теоретические знания на практике.

Как выполнить поиск с левой стороны, используя ПОИСКПОЗ и ИНДЕКС

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

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

Как видно на рисунке ниже, формула отлично справляется с этой задачей:

=INDEX($A$2:$A$10,MATCH("Russia",$B$2:$B$10,0))
=ИНДЕКС($A$2:$A$10;ПОИСКПОЗ("Russia";$B$2:$B$10;0))

ИНДЕКС и ПОИСКПОЗ в Excel

Теперь у Вас не должно возникать проблем с пониманием, как работает эта формула:

  • Во-первых, задействуем функцию MATCH (ПОИСКПОЗ), которая находит положение «Russia» в списке:

    =MATCH("Russia",$B$2:$B$10,0))
    =ПОИСКПОЗ("Russia";$B$2:$B$10;0))

  • Далее, задаём диапазон для функции INDEX (ИНДЕКС), из которого нужно извлечь значение. В нашем случае это A2:A10.
  • Затем соединяем обе части и получаем формулу:

    =INDEX($A$2:$A$10;MATCH("Russia";$B$2:$B$10;0))
    =ИНДЕКС($A$2:$A$10;ПОИСКПОЗ("Russia";$B$2:$B$10;0))

Подсказка: Правильным решением будет всегда использовать абсолютные ссылки для ИНДЕКС и ПОИСКПОЗ, чтобы диапазоны поиска не сбились при копировании формулы в другие ячейки.

Вычисления при помощи ИНДЕКС и ПОИСКПОЗ в Excel (СРЗНАЧ, МАКС, МИН)

Вы можете вкладывать другие функции Excel в ИНДЕКС и ПОИСКПОЗ, например, чтобы найти минимальное, максимальное или ближайшее к среднему значение. Вот несколько вариантов формул, применительно к таблице из предыдущего примера:

1. MAX (МАКС). Формула находит максимум в столбце D и возвращает значение из столбца C той же строки:

=INDEX($C$2:$C$10,MATCH(MAX($D$2:I$10),$D$2:D$10,0))
=ИНДЕКС($C$2:$C$10;ПОИСКПОЗ(МАКС($D$2:I$10);$D$2:D$10;0))

Результат: Beijing

2. MIN (МИН). Формула находит минимум в столбце D и возвращает значение из столбца C той же строки:

=INDEX($C$2:$C$10,MATCH(MIN($D$2:I$10),$D$2:D$10,0))
=ИНДЕКС($C$2:$C$10;ПОИСКПОЗ(МИН($D$2:I$10);$D$2:D$10;0))

Результат: Lima

3. AVERAGE (СРЗНАЧ). Формула вычисляет среднее в диапазоне D2:D10, затем находит ближайшее к нему и возвращает значение из столбца C той же строки:

=INDEX($C$2:$C$10,MATCH(AVERAGE($D$2:D$10),$D$2:D$10,1))
=ИНДЕКС($C$2:$C$10;ПОИСКПОЗ(СРЗНАЧ($D$2:D$10);$D$2:D$10;1))

Результат: Moscow

О чём нужно помнить, используя функцию СРЗНАЧ вместе с ИНДЕКС и ПОИСКПОЗ

Используя функцию СРЗНАЧ в комбинации с ИНДЕКС и ПОИСКПОЗ, в качестве третьего аргумента функции ПОИСКПОЗ чаще всего нужно будет указывать 1 или -1 в случае, если Вы не уверены, что просматриваемый диапазон содержит значение, равное среднему. Если же Вы уверены, что такое значение есть, – ставьте 0 для поиска точного совпадения.

  • Если указываете 1, значения в столбце поиска должны быть упорядочены по возрастанию, а формула вернёт максимальное значение, меньшее или равное среднему.
  • Если указываете -1, значения в столбце поиска должны быть упорядочены по убыванию, а возвращено будет минимальное значение, большее или равное среднему.

В нашем примере значения в столбце D упорядочены по возрастанию, поэтому мы используем тип сопоставления 1. Формула ИНДЕКС/ПОИСКПОЗ возвращает «Moscow», поскольку величина населения города Москва – ближайшее меньшее к среднему значению (12 269 006).

ИНДЕКС и ПОИСКПОЗ в Excel

Как при помощи ИНДЕКС и ПОИСКПОЗ выполнять поиск по известным строке и столбцу

Эта формула эквивалентна двумерному поиску ВПР и позволяет найти значение на пересечении определённой строки и столбца.

В этом примере формула ИНДЕКС/ПОИСКПОЗ будет очень похожа на формулы, которые мы уже обсуждали в этом уроке, с одним лишь отличием. Угадайте каким?

Как Вы помните, синтаксис функции INDEX (ИНДЕКС) позволяет использовать три аргумента:

INDEX(array,row_num,[column_num])
ИНДЕКС(массив;номер_строки;[номер_столбца])

И я поздравляю тех из Вас, кто догадался!

Начнём с того, что запишем шаблон формулы. Для этого возьмём уже знакомую нам формулу ИНДЕКС/ПОИСКПОЗ и добавим в неё ещё одну функцию ПОИСКПОЗ, которая будет возвращать номер столбца.

=INDEX(Ваша таблица,(MATCH(значение для вертикального поиска,столбец, в котором искать,0)),(MATCH(значение для горизонтального поиска,строка в которой искать,0))
=ИНДЕКС(Ваша таблица,(MATCH(значение для вертикального поиска,столбец, в котором искать,0)),(MATCH(значение для горизонтального поиска,строка в которой искать,0))

Обратите внимание, что для двумерного поиска нужно указать всю таблицу в аргументе array (массив) функции INDEX (ИНДЕКС).

А теперь давайте испытаем этот шаблон на практике. Ниже Вы видите список самых населённых стран мира. Предположим, наша задача узнать население США в 2015 году.

ИНДЕКС и ПОИСКПОЗ в Excel

Хорошо, давайте запишем формулу. Когда мне нужно создать сложную формулу в Excel с вложенными функциями, то я сначала каждую вложенную записываю отдельно.

Итак, начнём с двух функций ПОИСКПОЗ, которые будут возвращать номера строки и столбца для функции ИНДЕКС:

  • ПОИСКПОЗ для столбца – мы ищем в столбце B, а точнее в диапазоне B2:B11, значение, которое указано в ячейке H2 (USA). Функция будет выглядеть так:

    =MATCH($H$2,$B$1:$B$11,0)
    =ПОИСКПОЗ($H$2;$B$1:$B$11;0)

    Результатом этой формулы будет 4, поскольку «USA» – это 4-ый элемент списка в столбце B (включая заголовок).

  • ПОИСКПОЗ для строки – мы ищем значение ячейки H3 (2015) в строке 1, то есть в ячейках A1:E1:

    =MATCH($H$3,$A$1:$E$1,0)
    =ПОИСКПОЗ($H$3;$A$1:$E$1;0)

    Результатом этой формулы будет 5, поскольку «2015» находится в 5-ом столбце.

Теперь вставляем эти формулы в функцию ИНДЕКС и вуаля:

=INDEX($A$1:$E$11,MATCH($H$2,$B$1:$B$11,0),MATCH($H$3,$A$1:$E$1,0))
=ИНДЕКС($A$1:$E$11;ПОИСКПОЗ($H$2;$B$1:$B$11;0);ПОИСКПОЗ($H$3;$A$1:$E$1;0))

Если заменить функции ПОИСКПОЗ на значения, которые они возвращают, формула станет легкой и понятной:

=INDEX($A$1:$E$11,4,5))
=ИНДЕКС($A$1:$E$11;4;5))

Эта формула возвращает значение на пересечении 4-ой строки и 5-го столбца в диапазоне A1:E11, то есть значение ячейки E4. Просто? Да!

ИНДЕКС и ПОИСКПОЗ в Excel

Поиск по нескольким критериям с ИНДЕКС и ПОИСКПОЗ

В учебнике по ВПР мы показывали пример формулы с функцией ВПР для поиска по нескольким критериям. Однако, существенным ограничением такого решения была необходимость добавлять вспомогательный столбец. Хорошая новость: формула ИНДЕКС/ПОИСКПОЗ может искать по значениям в двух столбцах, без необходимости создания вспомогательного столбца!

Предположим, у нас есть список заказов, и мы хотим найти сумму по двум критериям – имя покупателя (Customer) и продукт (Product). Дело усложняется тем, что один покупатель может купить сразу несколько разных продуктов, и имена покупателей в таблице на листе Lookup table расположены в произвольном порядке.

ИНДЕКС и ПОИСКПОЗ в Excel

Вот такая формула ИНДЕКС/ПОИСКПОЗ решает задачу:

{=INDEX('Lookup table'!$A$2:$C$13,MATCH(1,(A2='Lookup table'!$A$2:$A$13)*
(B2='Lookup table'!$B$2:$B$13),0),3)}

{=ИНДЕКС('Lookup table'!$A$2:$C$13;ПОИСКПОЗ(1;(A2='Lookup table'!$A$2:$A$13)*
(B2='Lookup table'!$B$2:$B$13);0);3)}

Эта формула сложнее других, которые мы обсуждали ранее, но вооруженные знанием функций ИНДЕКС и ПОИСКПОЗ Вы одолеете ее. Самая сложная часть – это функция ПОИСКПОЗ, думаю, её нужно объяснить первой.

MATCH(1,(A2='Lookup table'!$A$2:$A$13),0)*(B2='Lookup table'!$B$2:$B$13)
ПОИСКПОЗ(1;(A2='Lookup table'!$A$2:$A$13);0)*(B2='Lookup table'!$B$2:$B$13)

В формуле, показанной выше, искомое значение – это 1, а массив поиска – это результат умножения. Хорошо, что же мы должны перемножить и почему? Давайте разберем все по порядку:

  • Берем первое значение в столбце A (Customer) на листе Main table и сравниваем его со всеми именами покупателей в таблице на листе Lookup table (A2:A13).
  • Если совпадение найдено, уравнение возвращает 1 (ИСТИНА), а если нет – 0 (ЛОЖЬ).
  • Далее, мы делаем то же самое для значений столбца B (Product).
  • Затем перемножаем полученные результаты (1 и 0). Только если совпадения найдены в обоих столбцах (т.е. оба критерия истинны), Вы получите 1. Если оба критерия ложны, или выполняется только один из них – Вы получите 0.

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

Обратите внимание: В этом случае необходимо использовать третий не обязательный аргумент функции ИНДЕКС. Он необходим, т.к. в первом аргументе мы задаем всю таблицу и должны указать функции, из какого столбца нужно извлечь значение. В нашем случае это столбец C (Sum), и поэтому мы ввели 3.

И, наконец, т.к. нам нужно проверить каждую ячейку в массиве, эта формула должна быть формулой массива. Вы можете видеть это по фигурным скобкам, в которые она заключена. Поэтому, когда закончите вводить формулу, не забудьте нажать Ctrl+Shift+Enter.

Если всё сделано верно, Вы получите результат как на рисунке ниже:

ИНДЕКС и ПОИСКПОЗ в Excel

ИНДЕКС и ПОИСКПОЗ в сочетании с ЕСЛИОШИБКА в Excel

Как Вы, вероятно, уже заметили (и не раз), если вводить некорректное значение, например, которого нет в просматриваемом массиве, формула ИНДЕКС/ПОИСКПОЗ сообщает об ошибке #N/A (#Н/Д) или #VALUE! (#ЗНАЧ!). Если Вы хотите заменить такое сообщение на что-то более понятное, то можете вставить формулу с ИНДЕКС и ПОИСКПОЗ в функцию ЕСЛИОШИБКА.

Синтаксис функции ЕСЛИОШИБКА очень прост:

IFERROR(value,value_if_error)
ЕСЛИОШИБКА(значение;значение_если_ошибка)

Где аргумент value (значение) – это значение, проверяемое на предмет наличия ошибки (в нашем случае – результат формулы ИНДЕКС/ПОИСКПОЗ); а аргумент value_if_error (значение_если_ошибка) – это значение, которое нужно возвратить, если формула выдаст ошибку.

Например, Вы можете вставить формулу из предыдущего примера в функцию ЕСЛИОШИБКА вот таким образом:

=IFERROR(INDEX($A$1:$E$11,MATCH($G$2,$B$1:$B$11,0),MATCH($G$3,$A$1:$E$1,0)),
"Совпадений не найдено. Попробуйте еще раз!")
=ЕСЛИОШИБКА(ИНДЕКС($A$1:$E$11;ПОИСКПОЗ($G$2;$B$1:$B$11;0);ПОИСКПОЗ($G$3;$A$1:$E$1;0));
"Совпадений не найдено. Попробуйте еще раз!")

И теперь, если кто-нибудь введет ошибочное значение, формула выдаст вот такой результат:

ИНДЕКС и ПОИСКПОЗ в Excel

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

IFERROR(INDEX(массив,MATCH(искомое_значение,просматриваемый_массив,0),"")
ЕСЛИОШИБКА(ИНДЕКС(массив;ПОИСКПОЗ(искомое_значение;просматриваемый_массив;0);"")

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

Оцените качество статьи. Нам важно ваше мнение:

Хитрости »

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


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

Предположим, вы получаете от поставщика/заказчика/клиента заполненную таблицу с перечнем продукции:
Таблица заказа
и эту таблицу необходимо сравнить с артикулами/кодами товара в имеющемся у вас каталоге продукции:
Таблица артикулов
Как видно — в нашем каталоге только артикулы без наименований. У заказчика же помимо артикулов еще и название товара, т.е. много лишнего. И вам надо понять какие товары присутствуют в вашем каталоге, а какие нет:
Что получить
Стандартных формул в 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)

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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


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



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

Понравилась статья? Поделить с друзьями:
  • Поиск повторяющихся чисел в excel
  • Поиск по тексту комбинация word
  • Поиск повторяющихся значений в excel на разных листах
  • Поиск по тексту в таблице excel
  • Поиск повторяющихся значений в excel в разных столбцах