Функції ПОИСК і ЗАПИТ Excel з прикладами формул

  • Поділитися Цим
Michael Brown

У посібнику пояснюється синтаксис функцій ПОИСК і ПОИСК в Excel і наводяться приклади формул для розширеного нетривіального використання.

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

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

    Функція ПОИСК в Excel використовується для повернення позиції певного символу або підрядка в текстовому рядку.

    Синтаксис функції Excel "Найти" наступний:

    FIND(find_text, within_text, [start_num])

    Перші 2 аргументи є обов'язковими, останній - необов'язковий.

    • Знайти_текст - символ або підрядок, який потрібно знайти.
    • В межах_тексту - текстовий рядок, в якому буде здійснюватися пошук. Зазвичай він подається у вигляді посилання на комірку, але ви також можете ввести рядок безпосередньо у формулі.
    • Start_num - необов'язковий аргумент, який вказує, з якого символу починати пошук. Якщо не вказано, то пошук починається з 1-го символу рядка within_text.

    Якщо функція FIND не знаходить символ(и) find_text, повертається помилка #VALUE!

    Наприклад, формула =FIND("d", "find") повертає 4, оскільки "d" є 4-ю літерою у слові " знахідка "Формула =FIND("a", "find") повертає помилку, оскільки в " знахідка ".

    Функція ПОИСК в Excel - про що варто пам'ятати!

    Щоб правильно використовувати формулу ПОИСК в Excel, слід пам'ятати наступні прості факти:

    1. Функція FIND - це чутливий до регістру Якщо ви шукаєте збіг без урахування регістру, скористайтеся функцією ПОШУК.
    2. Функція ПОИСК в Excel не дозволяє використовувати символи підстановки .
    3. Якщо аргумент find_text містить декілька символів, то функція FIND повертає позицію перший символ Наприклад, формула FIND("ap", "happy") повертає 2, тому що в слові "happy" 2-га буква "а".
    4. Якщо within_text містить кілька випадків find_text повертається перше входження. Наприклад, FIND("l", "hello") повертає 3, що є позицією першого символу "l" в слові "hello".
    5. Якщо find_text є значенням порожній рядок "", формула ПОИСК в Excel повертає перший символ у рядку пошуку.
    6. Функція Excel FIND повертає значення #VALUE! помилка якщо має місце будь-яка з наведених нижче подій:
      • Find_text не існує в within_text.
      • Start_num містить більше символів, ніж within_text.
      • Start_num - 0 (нуль) або від'ємне число.

    Функція ПОШУК в Excel

    Функція ПОИСК в Excel дуже схожа на функцію ЗНАЙТИ в тому, що вона також повертає розташування підрядка в текстовому рядку. Її синтаксис і аргументи подібні до синтаксису і аргументів функції ЗНАЙТИ:

    SEARCH(find_text, within_text, [start_num])

    На відміну від функції "ЗНАЙТИ", функція "ПОШУК" є нечутливий до регістру і дозволяє використовувати символи підстановки, як показано в наступному прикладі.

    А ось кілька основних формул пошуку в Excel:

    =ПОШУК("ринок", "супермаркет") повертає 6, оскільки підрядок "market" починається з 6-го символу слова "supermarket".

    =SEARCH("e", "Excel") повертає 1, оскільки "e" є першим символом у слові "Excel", ігноруючи регістр.

    Як і функція ПОИСК, функція ПОИСК в Excel повертає помилку #ЗНАЧЕННЯ! якщо:

    • Значення аргументу find_text не знайдено.
    • Аргумент start_num більший за довжину within_text.
    • Start_num дорівнює або менше нуля.

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

    Як вже зазначалося, функції ПОИСК і ЗАПИС в Excel дуже схожі за синтаксисом і призначенням. Однак вони мають кілька відмінностей.

    1. пошук з урахуванням особливостей справи проти пошуку без урахування особливостей справи

    Найбільш суттєва відмінність між функціями ПОШУК і ЗНАЙТИ в Excel полягає в тому, що ПОШУК не залежить від регістру, тоді як ЗНАЙТИ залежить від регістру.

    Наприклад, SEARCH("e", "Excel") повертає 1, оскільки ігнорує регістр "E", тоді як FIND("e", "Excel") повертає 4, оскільки враховує регістр.

    2. пошук за допомогою символів підстановки

    На відміну від функції ПОИСК, функція ПОИСК в Excel допускає використання символів підстановки в аргументі найти_текст:

    • Знак питання (?) відповідає одному символу, а
    • Зірочка (*) відповідає будь-якій серії символів.

    Щоб побачити, як це працює на реальних даних, розглянемо наступний приклад:

    Як видно на скріншоті вище, формула ПОИСК("function*2013", A2) повертає позицію першого символу ("f") в підрядку, якщо текстовий рядок, на який посилається аргумент within_text, містить як "function", так і "2013", незалежно від того, скільки інших символів знаходиться між ними.

    Порада: щоб знайти власне знак питання (?) або зірочку (*), введіть тильду (~) перед відповідним символом.

    Приклади формул ПОИСК і ПОИСК в Excel

    На практиці функції ПОИСК і ПОИСК в Excel рідко використовуються самі по собі. Як правило, вони використовуються в поєднанні з іншими функціями, такими як СЕРЕДИНА, ВЛЕВО або ВПРАВО, і наведені нижче приклади формул демонструють деякі реальні приклади їх використання.

    Приклад 1: Знайти рядок, що передує або слідує за заданим символом

    Цей приклад показує, як можна знайти і витягти всі символи в текстовому рядку зліва або справа від певного символу. Щоб було простіше зрозуміти, розглянемо наступний приклад.

    Припустимо, у вас є стовпець імен (стовпець А), і ви хочете витягнути Ім'я та Прізвище в окремі стовпці.

    Для отримання прізвища можна скористатися функцією FIND (або SEARCH) у поєднанні з функцією LEFT:

    =LEFT(A2, FIND(" ", A2)-1)

    або

    =LEFT(A2, SEARCH(" ", A2)-1)

    Як ви, напевно, знаєте, функція СРЗНАЧ повертає задану кількість крайніх лівих символів у рядку. І ви використовуєте функцію НАЙТИ для визначення позиції пробілу (" "), щоб функція СРЗНАЧ знала, скільки символів потрібно виділити. При цьому ви віднімаєте 1 від позиції пробілу, тому що не хочете, щоб повернуте значення включало пробіл.

    Для вилучення прізвища використовуйте комбінацію функцій RIGHT, FIND / SEARCH і LEN. Функція LEN потрібна для отримання загальної кількості символів в рядку, від якої віднімається позиція пробілу:

    =RIGHT(A2,LEN(A2)-FIND(" ",A2))

    або

    =RIGHT(A2,LEN(A2)-SEARCH(" ",A2))

    Результат демонструє наступний скріншот:

    Для більш складних сценаріїв, таких як вилучення по батькові або розділення імен з суфіксами, див. статтю Як розділити клітинки в Excel за допомогою формул.

    Приклад 2. Знайти N-те входження заданого символу в текстовому рядку

    Припустимо, у вас є текстові рядки в колонці A, скажімо, список SKU, і ви хочете знайти позицію 2-й тире в рядку. Наступна формула працює чудово:

    =FIND("-", A2, FIND("-",A2)+1)

    Перші два аргументи легко інтерпретувати: знайти тире ("-") в комірці A2. У третій аргумент (start_num) ви вбудовуєте іншу функцію FIND, яка вказує Excel почати пошук, починаючи з символу, що стоїть відразу після першого входження тире (FIND("-",A2)+1).

    Повернути позицію щодо 3-й випадок Ви вставляєте наведену вище формулу в аргумент start_num іншої функції FIND і додаєте до значення, що повертається, 2:

    =FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2)

    Іншим і, мабуть, більш простим способом пошуку N-го входження заданого символу є використання функції Excel FIND в поєднанні з функціями CHAR і SUBSTITUTE:

    =FIND(CHAR(1),SUBSTITUTE(A2,"-",CHAR(1),3))

    Де "-" - символ, про який йде мова, а "3" - N-те входження, яке ви хочете знайти.

    У наведеній вище формулі функція SUBSTITUTE замінює 3-тє входження тире ("-") на CHAR(1), що є недрукованим символом "Початок заголовка" в системі ASCII. Замість CHAR(1) можна використовувати будь-який інший недрукований символ від 1 до 31. А функція FIND повертає позицію цього символу в текстовому рядку. Отже, загальна формула виглядає наступним чином:

    FIND(CHAR(1),SUBSTITUTE( клітина , характер CHAR(1), N-й випадок ))

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

    Зверніть увагу, що функція ПОИСК в Excel чутлива до регістру букв. У нашому прикладі це не має значення, але якщо ви працюєте з буквами і вам потрібно отримати нечутливий до регістру збіг, використовуйте функцію ПОШУК замість функції ЗНАЙТИ.

    Приклад 3. Витягнути N символів після певного символу

    Для знаходження підрядка заданої довжини в будь-якому текстовому рядку використовується функція ПОИСК в Excel або ПОИСК в Excel в поєднанні з функцією СРЗНАЧ. Наступний приклад демонструє, як можна використовувати такі формули на практиці.

    У нашому списку SKU, припустимо, ви хочете знайти перші 3 символи, що слідують за першим тире, і витягнути їх в іншу колонку.

    Якщо б група символів, що передує першому тире, завжди містила однакову кількість елементів (наприклад, 2 символи), то це було б тривіальною задачею. Ви можете використати функцію MID для повернення 3 символів з рядка, починаючи з позиції 4 (пропускаючи перші 2 символи і тире):

    =MID(A2, 4, 3)

    У перекладі на англійську мову формула звучить так: "Подивіться в комірку А2, почніть вилучення з символу 4, а поверніть 3 символи".

    Однак у реальних робочих аркушах підрядок, який потрібно витягти, може починатися в будь-якому місці текстового рядка. У нашому прикладі ви можете не знати, скільки символів передує першому тире. Щоб впоратися з цією проблемою, скористайтеся функцією ПОИСК, щоб визначити початкову точку підрядка, який потрібно витягти.

    Формула FIND для повернення позиції 1-го тире виглядає наступним чином:

    =FIND("-",A2)

    Оскільки ви хочете почати з символу, який слідує за тире, додайте до значення, що повертається, 1 і вбудуйте наведену вище функцію в другий аргумент (start_num) функції MID:

    =MID(A2, FIND("-",A2)+1, 3)

    У цьому сценарії функція ПОШУК в Excel працює однаково добре:

    =MID(A2, SEARCH("-",A2)+1, 3)

    Це чудово, але що, якщо група символів після першого тире містить іншу кількість символів? Хм... це може бути проблемою:

    Як видно на скріншоті вище, формула відмінно працює для рядків 1 і 2. У рядках 4 і 5 друга група містить 4 символи, але повертаються тільки перші 3 символи. У рядках 6 і 7 в другій групі всього 2 символи, і тому наша формула пошуку в Excel повертає прочерк після них.

    Якби ви хотіли повернутися всі символи між 1-м і 2-м входженнями Як би Ви діяли, якби у Вас з'явився знак певного характеру (у цьому прикладі - тире), як би Ви діяли? Ось Вам відповідь:

    =MID(A2, FIND("-",A2)+1, FIND("-", A2, FIND("-",A2)+1) - FIND("-",A2)-1)

    Для кращого розуміння цієї формули MID розглянемо її аргументи по черзі:

    • 1-й аргумент (текст) - текстовий рядок, що містить символи, які потрібно виділити, в даному прикладі - комірка А2.
    • 2-й аргумент (start_position). Вказує позицію першого символу, який потрібно витягти. Ви використовуєте функцію FIND, щоб знайти перше тире в рядку і додати до цього значення 1, тому що ви хочете почати з символу, який слідує за тире: FIND("-",A2)+1.
    • 3-й аргумент (num_chars). Вказує кількість символів, які ви хочете повернути. У нашій формулі це найскладніша частина. Ви використовуєте дві функції FIND (або SEARCH), одна визначає позицію першого тире: FIND("-", A2). А інша повертає позицію другого тире: FIND("-", A2, FIND("-", A2)+1). Потім ви віднімаєте перше від другого, а потім віднімаєте 1, тому що ви не хочетеВ результаті ви отримаєте кількість символів між 1-м і 2-м тире, що є саме тим, що ми шукаємо. Отже, ви передаєте це значення в аргумент num_chars функції MID.

    Аналогічним чином можна повернути 3 знаки після 2-го тире:

    =MID(A2, FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2), 3)

    Або витягніть всі символи між 2-м і 3-м тире:

    =MID(A2, FIND("-", A2, FIND("-",A2)+1)+1, FIND("-",A2, FIND("-",A2, FIND("-",A2)+1) +2) - FIND("-",A2, FIND("-",A2)+1)-1)

    Приклад 4: Пошук тексту в круглих дужках

    Припустимо, що у вас є довгий текстовий рядок у стовпці A, і ви хочете знайти і витягти тільки текст, укладений в (круглі дужки).

    Для цього вам знадобиться функція СРЗНАЧ для повернення потрібної кількості символів з рядка, а також функція ПОИСК або ПОИСК в Excel, щоб визначити, з чого почати і скільки символів витягти.

    =MID(A2,SEARCH("(",A2)+1, SEARCH(")",A2)-SEARCH("(",A2)-1)

    Логіка цієї формули схожа на ті, що ми розглядали в попередньому прикладі. І знову ж таки, найскладнішою частиною є останній аргумент, який вказує формулі, скільки символів повернути. Цей досить довгий вираз в аргументі num_chars робить наступне:

    • Спочатку знаходять положення закриваючої дужки: SEARCH(")",A2)
    • Після цього ви знаходите позицію відкриваючої дужки: SEARCH("(",A2)
    • А потім вираховуєте різницю між позиціями закриваючої та відкриваючої дужок і віднімаєте від цього числа 1, тому що вам не потрібна жодна дужка в результаті: SEARCH(")",A2)-SEARCH("(",A2))-1

    Звісно, ніщо не заважає вам використовувати функцію Excel FIND замість SEARCH, адже в даному прикладі регістр або не регістр не має ніякого значення.

    Сподіваємося, що цей урок пролив світло на те, як використовувати функції ПОИСК і ЗАМЕНА в Excel. У наступному уроці ми детально розглянемо функцію ЗАМЕНА, так що стежте за новинами. Дякуємо за увагу!

    Завантажити робочий зошит з практики

    Приклади формул FIND і SEARCH

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.