Як выкарыстоўваць функцыю InStr у VBA (3 простыя прыклады)

  • Падзяліцца Гэтым
Hugh West

Працуючы з кодамі Excel VBA, мы сустракаем некалькі ўбудаваных функцый, якія пераўтвараюць складаную задачу ў невялікі аднарадковы код. InStr - гэта функцыя, даступная ў Excel VBA, якая шукае пэўны радок у іншым радку, пачынаючы з зададзенай пазіцыі. Сёння я пакажу, як можна выкарыстоўваць функцыю InStr у VBA для пошуку пэўнага радка ў іншым радку.

Спампаваць практычны сшытак

InStr Function.xlsm

Уводзіны ў VBA InStr Function

  • Зводка

Шукае пэўны радок у дадзеным радку, пачынаючы з зададзенай пазіцыі. Калі знаходзіць супадзенне, вяртае пазіцыю ў дадзеным радку, з якой пачалося супадзенне.

  • Сінтаксіс

InStr([пачатак ],радок1,радок2,[параўнаць])

  • Аргументы
АРГУМЕНТ ПАТРАБАВАННЕ АПІСАННЕ

[пачаць] Неабавязкова Пазіцыя, з якой будзе пачынацца пошук. Па змаўчанні 1.
радок1 Абавязковы Радок, у якім выконваецца пошук дадзенага радка.
радок2 Абавязковы Радок, які ён шукае ў дадзеным радку.
[параўнаць] Дадаткова Лікавае значэнне паміж {-1,0,1,2}, якое вызначае тып параўнання. Theпа змаўчанні -1 (vbUseCompareOption). Калі аператар Option Compare не ўказаны, выканайце двайковае параўнанне.

Заўвага:

  • Хоць Аргумент [пачатак] і аргумент [параўнаць] неабавязковыя, вам спатрэбіцца аргумент [пачатак] , калі вы вызначаеце аргумент [параўнаць] . У адваротным выпадку гэта выкліча памылку.
  • Калі адзін або абодва аргумента [пачатак] і аргумент [параўнаць] маюць нуль , вы сутыкнецеся з памылкай.
  • Чатыры зададзеныя значэнні ў аргуменце [параўнаць] выконваюць чатыры розныя тыпы параўнання. Яны згадваюцца ніжэй:
ЗНАЧЭННЕ ПАСТАЯННАЕ АПІСАННЕ

-1 vbUseCompareOption Выконвае параўнанне, указанае ў аператар Option Compare.
0 vbBinaryCompare Выконвае двайковае параўнанне.
1 vbTextCompare Выконвае параўнанне тэксту.
2 vbDatabaseCompare Выконвае параўнанне на аснове вашай базы дадзеных .
  • Аператар Option Compare - гэта аператар, які змяшчаецца перад пачаткам асноўнага кода VBA. Ён вызначае, ці будзе код шукаць двайковае параўнанне або тэкставае параўнанне, калі патрабуецца.

Параметр Параўнанне тэксту

    • Кажучы простымі словамі , двайковае параўнанне азначае ўлік рэгістрапараўнанне.
    • Кажучы простымі словамі , Параўнанне тэксту азначае параўнанне без уліку рэгістра.
  • Зваротнае значэнне
    • Вяртае пазіцыю ў радку1 , з якой пачаўся радок2 .
    • У выпадку, калі радок2 не знойдзены у межах радка1 , пачынаючы з пазіцыі пачатку , вяртае 0.
    • Калі радок1 мае нулявую даўжыню, вяртае 0.
    • Калі радок2 мае нулявую даўжыню, вяртае аргумент пачатак .
    • І, нарэшце, калі любы з радок1 або string2 роўна Null , вяртае памылку.

3 простыя прыклады выкарыстання функцыі VBA InStr

In У гэтым раздзеле мы ўбачым тры простыя прыклады прымянення функцыі VBA InStr у Excel. Давайце паглядзім першы прыклад функцыі InStr у кодах VBA.

1. Рашэнне аб тым, ці з'яўляецца адрас адрасам электроннай пошты з дапамогай функцыі VBA InStr

Тут мы ўзялі набор даных, які змяшчае некаторыя кантактныя адрасы кліентаў. Нашай мэтай тут будзе вызначыць, ці з'яўляюцца адрасы адрасамі электроннай пошты ці не.

Цяпер мы распрацуем код VBA з выкарыстаннем функцыі InStr для ідэнтыфікацыі ці з'яўляецца гэта адрас электроннай пошты ці не. Каб зрабіць гэта, выканайце наступныя крокі.

Крокі:

  • Спачатку перайдзіце на ўкладку Распрацоўшчык і абярыце Visual Basic ( Або націсніце Alt+F11) каб адкрыць VBA акно.

  • Затым у акне VBA перайдзіце да Уставіць > Модуль .

  • Пасля гэтага ўстаўце ў модуль наступны код:
9173

  • Больш за тое, мы стварылі функцыю пад назвай DECISION . Ён вырашае, ці з'яўляецца адрас адрасам электроннай пошты ці не. Давайце прыменім гэтую функцыю да набору даных, які ў нас ёсць.
  • У ячэйцы C5 запішыце наступную формулу, а потым аўтаматычна запоўніце астатнія ячэйкі з дапамогай Маркера запаўнення .
=DECISION(B5)

  • Як мы бачым, мы ідэнтыфікавалі кожны адрас, ці з'яўляецца ён адрасам электроннай пошты ці не.

🎓 Як працуе код?

  • Функцыя DECISION(string1 As String)

Спачатку гэта стварае функцыю пад назвай DECISION з радковы аргумент з імем string1 .

  • Dim Position As Integer

Ён аб'яўляе цэлалікавую зменную з імем Position .

  • Пазіцыя = InStr(1, радок1, “@”, 0)

Гэта прысвойвае значэнне Размясціце зменную як вывад функцыі InStr з аргументамі 1, радок1, “@” і 0 . Карацей кажучы, гэта прызначае пазіцыю ў адрасе, дзе ёсць “@” .

  • Калі пазіцыя = 0, то DECISION = “Не электронная пошта”

Ён прызначае вывад функцыі DECISION як “Not Email” , калі Position зменная 0 , гэта азначае, што ў адрасе не было “@” .

(Успомніце, калі які-небудзь радок не знойдзены ў дадзеным радку, <Функцыя 1>InStr вяртае 0 ).

  • Else DECISION = “Email”

Гэта прызначае вывад функцыі DECISION як “Email” , калі ў адрасе быў “@” . Такім чынам, адрасы, дзе ёсць “@” , адносяцца да катэгорыі Электронная пошта , а астатнія - як “Не электронная пошта” .

Падобныя паказанні

  • Як выкарыстоўваць функцыю VBA UCASE ў Excel (4 прыклады)
  • Выкарыстоўваць функцыю MsgBox у Excel VBA (Поўнае кіраўніцтва)
  • Як выкарыстоўваць функцыю VBA SPLIT у Excel (5 прыкладаў)
  • Выкарыстоўваць функцыю LCase ў VBA ў Excel (з 4 прыклады)
  • Як выкарыстоўваць функцыю выпраўлення ў Excel VBA (4 прыклады)

2. Выкарыстанне функцыі VBA InStr для Выманне пашырэння некаторых адрасоў электроннай пошты

Тут у нас ёсць спіс некаторых адрасоў электроннай пошты некаторых кліентаў. На гэты раз мы выцягнем пашырэнне адраса электроннай пошты, напрыклад, gmail.com або yahoo.com .

Каб зрабіць гэта, выканайце наступныя крокі.

Крокі:

  • Для пачатку, як і ў папярэднім спосабе, адкрыйце новы VBA і ўстаўце наступны код у акно.
2239

  • Акрамя таго, мы стварылі функцыю пад назвай ПАШЫРЭННЕ . Ён здабывае пашырэнне любога адраса электроннай пошты.
  • Больш за тое, давайце прыменім гэту функцыю да набору даных, які ў нас ёсць. Спачатку ўвядзіце гэту формулу ў ячэйку C5 , а затым двойчы пстрыкніце на Марклет запаўнення .
=EXTENSION(B5)

  • Нарэшце, мы бачым, што мы паспяхова здабылі пашырэнне ўсіх электронных лістоў.

🎓 Як працуе код?

  • Функцыя EXTENSION(Email As String)

Гэта стварае новую функцыю пад назвай EXTENSION з радковы аргумент з імем Email .

  • Dim Position As Integer

Гэтая частка аб'яўляе цэлалікавую зменную з імем Position .

  • Пазіцыя = InStr(1, Email, “@”, 0)

Гэта прысвойвае значэнне <1 Пераменная>Position як вывад функцыі InStr з аргументамі 1, Email, “@” і 0 . Карацей кажучы, гэта прызначае пазіцыю ў Email , дзе ёсць “@” .

  • EXTENSION = Right(Email, (Len (Электронная пошта) – Пасада))

Гэта частка прызначае вывад функцыі EXTENSION як сімвалы пасля сімвала “@” . Гэта неабходнае пашырэнне Электроннай пошты .

3. Выманне імя або прозвішча з імя з дапамогай функцыі VBA InStr

Нарэшце, мы выканаем зусім іншую задачу. На гэты раз у нас ёсць імёны некаторых супрацоўнікаўкампанія. І мы паспрабуем стварыць функцыю для вымання імя або прозвішча супрацоўнікаў.

Каб зрабіць гэта, выканайце наступныя дзеянні.

Крокі:

  • Па-першае, падобна да метаду 1 , устаўце прыведзены ніжэй код у новы модуль у акне VBA.
6838

  • Тут мы стварылі функцыю пад назвай SHORTNAME , якая здабывае імя або прозвішча з імя. Давайце прыменім гэту формулу да нашага набору даных.
  • Спачатку, каб атрымаць імя, запішыце формулу ніжэй у ячэйку C5 .
=SHORTNAME(B5,-1)

  • Нарэшце, каб атрымаць прозвішчы, мы запісваем наступную формулу ў D5 :
=SHORTNAME(B5,1)

  • Пасля, калі мы аўтаматычна запоўнім астатнія вочкі з дапамогай апрацоўшчыка запаўнення , мы ўбачым жаданы вынік.

🎓 Як працуе код?

  • Функцыя SHORTNAME(Name As String, First_or_Last As Integer)

Яна стварае новую функцыю пад назвай SHORTNAME з адным аргументам String з імем Name і адным аргументам Integer з імем First_or_Last .

  • Dim Break As Integer

Гэта частка абвяшчае новую цэлую пераменную з назвай Break .

  • Break = InStr(1, Name, ” “, 0)

Ён прысвойвае значэнне зменнай Break у якасці вываду функцыі InStr з аргументамі 1, Імя, “ ” і 0 . Карацей кажучы, гэта прызначае пазіцыю ў Імя , дзе ёсць прабел (“ ”).

  • If First_or_Last = -1 Then SHORTNAME = Left(Name, Break – 1)

Гэты радок прызначае вывад функцыі SHORTNAME як сімвалы перад прабелам , калі аргумент Першы_або_Апошні роўны -1. Гэта першае імя.

  • SHORTNAME = Right(Name, Len(Name) – Break)

Гэтая частка прызначае выхад SHORTNAME функцыянуе як сімвалы пасля прабелу , калі аргумент First_or_Last роўны 1. Гэта прозвішча.

Выснова

Такім чынам, вы можаце пісаць коды VBA з дапамогай функцыі InStr , якая вызначае пазіцыю пэўнага радка ў іншым зададзеным радок, а затым вы можаце ствараць свае ўласныя функцыі для розных мэтаў. Акрамя таго, калі ў вас ёсць якія-небудзь пытанні, не саромейцеся задаваць нам.

Х'ю Уэст з'яўляецца вельмі дасведчаным трэнерам і аналітыкам Excel з больш чым 10-гадовым вопытам работы ў галіны. Ён мае ступень бакалаўра ў галіне бухгалтарскага ўліку і фінансаў і ступень магістра дзелавога адміністравання. Х'ю захапляецца навучаннем і распрацаваў унікальны падыход да навучання, які лёгка прытрымлівацца і зразумець. Яго экспертныя веды Excel дапамаглі тысячам студэнтаў і спецыялістаў па ўсім свеце палепшыць свае навыкі і атрымаць поспех у сваёй кар'еры. Праз свой блог Х'ю дзеліцца сваімі ведамі з усім светам, прапаноўваючы бясплатныя падручнікі па Excel і онлайн-трэнінгі, каб дапамагчы прыватным асобам і прадпрыемствам цалкам раскрыць свой патэнцыял.