Екцел ВБА ИнСтр функција - објашњено са примерима

Преглед садржаја

Јуче сам добио поруку од једног од својих читалаца - јун.

Желела је да зна како да примени подебљани формат фонта на одређени део низа у ћелији. На пример, примените подебљани формат само на реч „Хелло“ из „Хелло Ворлд“.

Хтела је то да уради за стотине ћелија одједном.

Пошто у Екцелу нема уграђене функције која то може учинити, створио сам једноставан макро који користи Екцел ВБА ИнСтр функција (видећете како то да урадите у Примеру 4 у овом водичу).

Али прво, да видимо како функционише Екцел ВБА ИнСтр функција!

Екцел ВБА ИнСтр функција

У овом водичу ћу објаснити употребу функције ИнСтр у Екцелу ВБА и видети неке практичне примере где се она може користити.

Екцел ВБА ИнСтр функција - Увод

ИнСтр функција проналази позицију наведеног подниза у низу и враћа прву позицију њеног појављивања.

На пример, ако желите да пронађете положај „к“ у „Екцелу“, коришћење Екцел ВБА ИнСтр функције вратило би 2.

Синтакса функције ИнСтр

ИнСтр ([Старт], Стринг1, Стринг2, [Упореди])
  • [Почетак] - (опционални аргумент) ово је целобројна вредност која говори функцији ИнСтр почетну позицију са које би требало да почне да тражи. На пример, ако желим да претрага почне од почетка, унећу вредност као 1. Ако желим да почне од трећег знака па надаље, користићу 3. Ако се изостави, узима се подразумевана вредност 1.
  • Стринг1 - Ово је главни низ (или родитељски низ) у којем желите да претражујете. На пример, ако тражите положај к у Екцелу, низ 1 би био „Екцел“.
  • Стринг2 - Ово је подниз који тражите. На пример, ако тражите положај к у Екцелу, Стринг2 би био к.
  • [Упоредити] - (опционални аргумент) Можете навести једну од следеће три вредности за аргумент [пореди]:
    • вбБинариЦомпаре - Ово би значило поређење карактера. На пример, ако тражите „к“ у „Екцелу“, вратиће 2, али ако тражите „Кс“ у „Екцелу“, вратиће се 0 јер је Кс у великим словима. Такође можете користити 0 уместо вбБинариЦомпаре. Ако је аргумент [Упореди] изостављен, то се узима као задано.
    • вбТектЦомпаре - Ово би учинило текстуално поређење. На пример, ако тражите „к“ или „Кс“ у Екцелу, вратило би се 2 у оба случаја. Овај аргумент занемарује велика слова. Такође можете користити 1 уместо вбТектЦомпаре.
    • вбДатабасеЦомпаре - Ово се користи само за Мицрософт Аццесс. За поређење користи податке из базе података. Такође можете користити 2 уместо вбДатабасеЦомпаре.

Додатне напомене о Екцел ВБА ИнСтр функцији:

  • ИнСтр је ВБА функција, а не функција радног листа. То значи да га не можете користити унутар радног листа.
  • Ако је Стринг2 (који је подниз чији положај тражите) празан, функција би вратила вредност аргумента [Старт].
  • Ако функција ИнСтр не може пронаћи подниз у главном низу, вратила би 0.

Погледајмо сада неки пример коришћења Екцел ВБА ИнСтр функције

Пример 1 - Проналажење позиције од почетка

У овом примеру, користићу функцију ИнСтр да пронађем позицију „В“ у „Екцел ВБА“ од почетка.

Код за ово би био:

Суб ФиндФромБегиннинг () Дим Поситион Ас Интегер Поситион = ИнСтр (1, "Екцел ВБА", "В", вбБинариЦомпаре) МсгБок Поситион Енд Суб

Када покренете овај код, он ће приказати оквир за поруку са вредношћу 7, што је положај „В“ у низу „Екцел ВБА“.

Пример 2 - Проналажење положаја са почетка друге речи

Претпоставимо да желим да пронађем позицију „тхе“ у реченици - „Брза смеђа лисица прескаче лењег пса“

Међутим, желим да претрага почне другом речју па надаље.

У овом случају, морамо променити аргумент [Старт] да бисмо били сигурни да он одређује позицију одакле почиње друга реч.

Ево кода који ће то учинити:

Суб ФиндФромСецондВорд () Дим Поситион Ас Интегер Поситион = ИнСтр (4, "Брза смеђа лисица прескаче лењег пса", "тхе", вбБинариЦомпаре) МсгБок Поситион Енд Суб

Овај код ће приказати оквир за поруку са вредношћу 32 јер смо одредили почетну позицију 4. Стога занемарује први „Тхе“ и проналази други „тхе“ у реченици.

Ако желите да га учините динамичнијим, можете побољшати код тако да аутоматски занемарује прву реч.

Ево побољшаног кода који ће то учинити:

Суб ФиндФромСецондВорд () Дим СтартингПоситион Ас Интегер Дим Поситион Ас Интегер СтартингПоситион = ИнСтр (1, "Брза смеђа лисица прескаче лењег пса", "", вбБинариЦомпаре) Поситион = ИнСтр (СтартингПоситион, "Брза смеђа лисица скаче преко лењог дог "," тхе ", вбБинариЦомпаре) МсгБок Позиција Крај Суб

Овај код прво проналази позицију размака и складишти га у променљивој СтартингПоситион.

Затим користи ову променљиву као почетну позицију за тражење речи „тхе“.

Отуда враћа 32 (што је почетна позиција „тхе“ после прве речи).

Пример 3 - Проналажење положаја @ на адреси е -поште

Можете лако да креирате прилагођену функцију да бисте пронашли позицију @ на адреси е -поште помоћу Екцел ВБА ИнСтр функције.

Ево кода за креирање прилагођене функције:

Функција ФиндПоситион (Реф Ас Ранге) Ас Интегер Дим Поситион Ас Интегер Поситион = ИнСтр (1, Реф, "@") ФиндПоситион = Функција Крај позиције

Сада ову прилагођену функцију можете користити као било коју другу функцију радног листа. Референтна ћелија ће узети као улаз и дати вам положај @ у њој.

Слично томе, можете креирати прилагођену функцију за проналажење положаја било ког подниза у главном низу.

Пример 4 - Истицање дела низа унутар ћелија

Ово је питање које је поставио Јуне (мој читалац који ме је такође инспирисао да напишем овај водич).

Ево примера података у формату који ми је послао јун:

Њен упит је био да бројеве изван заграде подебља.

Ево кода који сам направио и који ради ово:

Суб Болд () Дим рЦелл Ас Ранге Дим Цхар Ас Интегер За сваку рЦелл у избору ЦхарЦоунт = Лен (рЦелл) Цхар = ИнСтр (1, рЦелл, "(") рЦелл.Цравови (1, Цхар - 1). Фонт.Болд = Труе Нект рЦелл Енд Суб

Горњи код користи петљу За свако за пролазак кроз сваку ћелију у избору. Он идентификује позицију почетног знака заграде помоћу функције ИнСтр. Затим мења фонт текста испред заграде.

Да бисте користили овај код, морате да копирате и залепите у модул у ВБ уређивачу.

Када копирате залепљени код, изаберите ћелије у којима желите да извршите ово обликовање и покрените макро (као што је приказано испод).

Можда ће вам се допасти и следећи Екцел ВБА водичи:

  • Екцел ВБА СПЛИТ функција.
  • ВБА ТРИМ функција.
  • Врхунски водич за Екцел ВБА петље.
  • Водич за почетнике о коришћењу Фор Нект Лооп у програму Екцел ВБА.
  • Како да креирате и користите Екцел програмски додатак.
  • Како комбиновати више радних свезака у једну Екцел радну свеску.
  • Како бројати обојене ћелије у Екцелу
  • Корисни примери Екцел ВБА макроа за почетнике.
  • Како сортирати податке у Екцелу помоћу ВБА (Корак по корак водич)

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave