Функции FIND и SEARCH в Excel с примери за формули

  • Споделя Това
Michael Brown

В урока е обяснен синтаксисът на функциите FIND и SEARCH на Excel и са дадени примери за разширени нетривиални употреби.

В последната статия разгледахме основите на диалоговия прозорец Excel Find and Replace (Намиране и заместване). В много ситуации обаче може да искате Excel автоматично да намира и извлича данни от други клетки въз основа на вашите критерии. Затова нека разгледаме по-отблизо какво предлагат функциите за търсене на Excel.

    Функция FIND на Excel

    Функцията FIND в Excel се използва за връщане на позицията на определен символ или подниз в текстов низ.

    Синтаксисът на функцията Excel Find е следният:

    FIND(find_text, within_text, [start_num])

    Първите два аргумента са задължителни, а последният е незадължителен.

    • Find_text - символа или подниза, който искате да намерите.
    • Within_text - обикновено се предоставя като препратка към клетка, но можете също така да въведете низа директно във формулата.
    • Start_num - незадължителен аргумент, който указва от кой символ трябва да започне търсенето. Ако се пропусне, търсенето започва от 1-вия символ на низа within_text.

    Ако функцията FIND не открие символа(ите) на find_text, се връща грешка #VALUE!.

    Например, формулата =FIND("d", "find") връща 4, защото "d" е четвъртата буква в думата " да намерите ". Формулата =FIND("a", "find") връща грешка, защото в " да намерите ".

    Функция FIND на Excel - неща, които трябва да запомните!

    За да използвате правилно формулата FIND в Excel, имайте предвид следните прости факти:

    1. Функцията FIND е чувствителни към големи и малки букви . Ако търсите съвпадение, което не се различава по размер на буквите, използвайте функцията SEARCH.
    2. Функцията FIND в Excel не позволява използването на заместващи символи .
    3. Ако аргументът find_text съдържа няколко символа, функцията FIND връща позицията на първи символ Например формулата FIND("ap", "happy") връща 2, защото "a" е втората буква в думата "happy".
    4. Ако within_text съдържа няколко случая на find_text, се връща първата среща. Например FIND("l", "hello") връща 3, което е позицията на първия символ "l" в думата "hello".
    5. Ако find_text е празен низ "", формулата FIND на Excel връща първия символ в търсения низ.
    6. Функцията FIND на Excel връща #VALUE! грешка ако възникне някое от следните събития:
      • Find_text не съществува в within_text.
      • Start_num съдържа повече символи от within_text.
      • Start_num е 0 (нула) или отрицателно число.

    Функция SEARCH на Excel

    Функцията SEARCH (Търсене) в Excel е много подобна на FIND (Търсене), тъй като също връща местоположението на подниз в текстов низ. Синтаксисът и аргументите ѝ са подобни на тези на FIND (Търсене):

    SEARCH(find_text, within_text, [start_num])

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

    А ето и няколко основни формули за търсене в Excel:

    =SEARCH("пазар", "супермаркет") връща 6, тъй като поднизът "market" започва от 6-ия символ на думата "supermarket".

    =SEARCH("e", "Excel") връща 1, тъй като "e" е първият символ в думата "Excel", като се пренебрегва регистърът.

    Подобно на FIND, функцията SEARCH на Excel връща грешката #VALUE!, ако:

    • Стойността на аргумента find_text не е намерена.
    • Аргументът start_num е по-голям от дължината на within_text.
    • Start_num е равно на или по-малко от нула.

    По-нататък в този урок ще намерите още няколко примера за формули, които показват как да използвате функцията SEARCH в работните листове на Excel.

    Както вече споменахме, функциите FIND и SEARCH в Excel си приличат много по отношение на синтаксиса и употребите. Въпреки това те имат няколко разлики.

    1. Търсене с отчитане на малки и големи букви срещу търсене без отчитане на големи и малки букви

    Най-съществената разлика между функциите SEARCH и FIND на Excel е, че при SEARCH не се отчитат големи и малки букви, докато при FIND се отчитат малки и големи букви.

    Например SEARCH("e", "Excel") връща 1, тъй като пренебрегва регистъра на "E", докато FIND("e", "Excel") връща 4, тъй като има предвид регистъра.

    2. Търсене с подредба на символи

    За разлика от FIND, функцията SEARCH на Excel приема заместващи символи в аргумента find_text:

    • Въпросителният знак (?) съответства на един символ, а
    • Звездичката (*) съвпада с всяка поредица от символи.

    За да видите как работи в реални данни, разгледайте следния пример:

    Както виждате на горната снимка, формулата SEARCH("function*2013", A2) връща позицията на първия символ ("f") в подниза, ако текстовият низ, посочен в аргумента within_text, съдържа едновременно "function" и "2013", без значение колко други символа има между тях.

    Съвет: За да намерите действителен въпросителен знак (?) или звездичка (*), въведете тилда (~) преди съответния символ.

    Примери за формулите FIND и SEARCH в Excel

    На практика функциите FIND и SEARCH в Excel рядко се използват самостоятелно. Обикновено те се използват в комбинация с други функции, като MID, LEFT или RIGHT, а следващите примери за формули показват някои реални приложения.

    Пример 1. Намиране на низ, предшестващ или следващ даден символ

    Този пример показва как можете да намерите и извлечете всички символи в текстов низ вляво или вдясно от определен символ. За да разберете нещата по-лесно, разгледайте следния пример.

    Да предположим, че имате колона с имена (колона А) и искате да извадите Първото име и Фамилията в отделни колони.

    За да получите първото име, можете да използвате FIND (или SEARCH) в комбинация с функцията LEFT:

    =ЛЕВО(A2, FIND(" ", A2)-1)

    или

    =ЛЯВО(A2, SEARCH(" ", A2)-1)

    Както вероятно знаете, функцията LEFT на Excel връща определения брой най-леви символи в низ. Използвате функцията FIND, за да определите позицията на интервала (" "), за да може функцията LEFT да знае колко символа да извлече. При това изваждате 1 от позицията на интервала, защото не искате върнатата стойност да включва интервала.

    За да извлечете фамилното име, използвайте комбинацията от функциите RIGHT, FIND / SEARCH и LEN. Функцията LEN е необходима, за да се получи общият брой символи в низа, от който се изважда позицията на интервала:

    =ПРАВО(A2,LEN(A2)-НАМЕРИ(" ",A2))

    или

    =ПРАВО(A2,LEN(A2)-SEARCH(" ",A2))

    Следната снимка на екрана демонстрира резултата:

    За по-сложни сценарии, като например извличане на второ име или разделяне на имена с наставки, вижте Как да разделяме клетки в Excel с помощта на формули.

    Пример 2. Намиране на N-тото появяване на даден символ в текстов низ

    Да предположим, че в колона А има някакви текстови низове, например списък с артикули, и искате да намерите позицията на 2. тире в низ. Следната формула работи чудесно:

    =НАМЕРЕТЕ("-", A2, НАМЕРЕТЕ("-",A2)+1)

    Първите два аргумента са лесни за тълкуване: намерете тире ("-") в клетка A2. В третия аргумент (start_num) вграждате друга функция FIND, която казва на Excel да започне търсенето от символа, който идва веднага след първата поява на тирето (FIND("-",A2)+1).

    Връщане на позицията на 3-ти случай , вграждате горната формула в аргумента start_num на друга функция FIND и добавяте 2 към върнатата стойност:

    =НАМЕРЕТЕ("-",A2, НАМЕРЕТЕ("-", A2, НАМЕРЕТЕ("-",A2)+1) +2)

    Друг и вероятно по-прост начин за намиране на N-тата поява на даден символ е използването на функцията FIND на Excel в комбинация с CHAR и SUBSTITUTE:

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

    Където "-" е въпросният символ, а "3" е N-тата среща, която искате да намерите.

    В горната формула функцията SUBSTITUTE замества третата поява на тирето ("-") с CHAR(1), което е непечатаемият символ "Начало на заглавие" в системата ASCII. Вместо CHAR(1) можете да използвате всеки друг непечатаем символ от 1 до 31. И след това функцията FIND връща позицията на този символ в текстовия низ. Така че общата формула е следната:

    FIND(CHAR(1),SUBSTITUTE( клетка , символ , CHAR(1), N-та поява ))

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

    Забележка: Моля, не забравяйте, че функцията FIND на Excel е чувствителна към малки и големи букви. В нашия пример това няма значение, но ако работите с букви и искате без значение на размера на буквите използвайте функцията SEARCH вместо FIND.

    Пример 3. Извличане на N символа след определен символ

    За да откриете подниз с дадена дължина в рамките на произволен текстов низ, използвайте Excel FIND или Excel SEARCH в комбинация с функцията MID. Следващият пример показва как можете да използвате тези формули на практика.

    Предполагаме, че в нашия списък с артикули искате да намерите първите 3 символа след първото тире и да ги изведете в друга колона.

    Ако групата от знаци, предшестваща първото тире, винаги съдържа един и същ брой елементи (например 2 знака), това би било тривиална задача. Можете да използвате функцията MID, за да върнете 3 знака от низ, започвайки от позиция 4 (прескачайки първите 2 знака и тирето):

    =MID(A2, 4, 3)

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

    В реалните работни листове обаче поднизът, който трябва да извлечете, може да започва навсякъде в текстовия низ. В нашия пример може да не знаете колко символа предхождат първото тире. За да се справите с това предизвикателство, използвайте функцията FIND, за да определите началната точка на подниза, който искате да извлечете.

    Формулата FIND за връщане на позицията на първата чертичка е следната:

    =FIND("-",A2)

    Тъй като искате да започнете със символа, който следва тирето, добавете 1 към върнатата стойност и вградете горната функция във втория аргумент (start_num) на функцията MID:

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

    В този случай функцията SEARCH на 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 символа след второто тире:

    =MID(A2, FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +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. Намиране на текст между скоби

    Да предположим, че имате дълъг текстов низ в колона А и искате да намерите и извлечете само текста, затворен в (скоби).

    За целта е необходима функцията MID, която връща желания брой символи от даден низ, и функцията FIND или SEARCH на Excel, за да се определи откъде да се започне и колко символа да се извлекат.

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

    Логиката на тази формула е подобна на тази, която разгледахме в предишния пример. И отново най-сложната част е последният аргумент, който казва на формулата колко символа да върне. Този доста дълъг израз в аргумента num_chars прави следното:

    • Първо, намерете позицията на затварящата скоба: SEARCH(")",A2)
    • След това намерете позицията на отварящата скоба: SEARCH("(",A2)
    • След това изчислявате разликата между позициите на затварящите и отварящите скоби и изваждате 1 от това число, тъй като не искате нито една от скобите да присъства в резултата: ТЪРСЕНЕ(")",A2)-ТЪРСЕНЕ("(",A2))-1

    Естествено, нищо не ви пречи да използвате функцията FIND на Excel вместо SEARCH, тъй като чувствителността или нечувствителността на малките и големите букви няма значение в този пример.

    Надяваме се, че този урок е хвърлил малко светлина върху това как да използвате функциите SEARCH и FIND в Excel. В следващия урок ще разгледаме отблизо функцията REPLACE, така че моля, останете с нас. Благодарим ви, че прочетохте!

    Изтегляне на работна тетрадка за практика

    Примери за формули FIND и SEARCH

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.