VBA InStrRev | Ako používať funkciu Excel VBA InStrRev?

Excel VBA INSTRREV

Funkcia VBA INSTRREV , ako je skratka pre výraz „In String Reverse“ , vracia pozíciu prvého výskytu hľadaného reťazca (podreťazca) v inom reťazci, počnúc od konca reťazca (sprava doľava), z ktorého hľadáme prehľadávateľný reťazec.

Funkcia INSTRREV začne hľadať reťazec, ktorý je možné vyhľadať, od konca reťazca, v ktorom ho musíme zistiť, ale počíta pozíciu od začiatku. Existuje ešte jedna funkcia INSTR vba (skratka „In String“ ), ktorá tiež vyhľadáva reťazec v inom reťazci a vracia pozíciu, ale táto funkcia spustí vyhľadávanie od začiatku reťazca, z ktorého hľadáme reťazec, ktorý je možné prehľadať.

INSTRREV a INSTR sú vstavané reťazcové / textové VBA funkcie MS Excel. Môžeme ich použiť pri písaní ľubovoľného makra v editore Microsoft Visual Basic.

Syntax

Ako vidíme na obrázku vyššie, existujú 2 povinné a 2 voliteľné argumenty.

  • StringCheck As String: Toto je povinný argument. Musíme dať hľadaný výraz reťazca.
  • StringMatch As String: Tento argument je tiež povinný. Musíme určiť hľadaný reťazcový výraz.
  • Začať ako dlho = -1: Toto je voliteľný argument. Zadáme číselný výraz. V predvolenom nastavení trvá -1, čo znamená, že hľadanie sa začína na poslednej pozícii znaku. Ak zadáme ľubovoľnú kladnú hodnotu ako 80, začne sa hľadať od konca reťazca po tých zvyšných 80 znakoch.
  • Porovnať ako VbCompareMethod = vbBinaryCompare tak dlho: Tento argument je voliteľný.

Pre tento argument môžeme určiť nasledujúce hodnoty.

Návratové hodnoty

  1. Funkcia INSTRREV vráti 0, ak má kontrola reťazca  nulovú dĺžku alebo  sa nenájde zhoda reťazca alebo argument „štart“ > dĺžka zhody reťazca .
  2. Táto funkcia vracia , Null ' v prípade, že kontrola reťazec  alebo reťazec zápas  je , Null' .
  3. Ak má zhoda reťazcov nulovú dĺžku, funkcia sa vráti na začiatok .
  4. Ak sa v rámci kontroly reťazca nájde zhoda reťazcov , potom funkcia vráti pozíciu, v ktorej sa nájde zhoda.

Ako používať funkciu VBA INSTRREV?

Túto šablónu VBA INSTRREV Excel si môžete stiahnuť tu - Šablóna VBA INSTRREV Excel

Predpokladajme, že máme údaje o názvoch filmov a ich režiséroch. Chceme rozdeliť mená režisérov.

Máme údaje v 1201 riadkoch. Ak túto úlohu urobíme manuálne, bude to trvať veľa času.

Na to isté použijeme kód VBA. Kroky sú:

  • Musíme kliknúť na príkaz „Visual Basic“, ktorý je k dispozícii v skupine „Code“ na karte „Developer“, alebo môžeme stlačiť kombináciu klávesov Alt + F11 a otvoriť editor jazyka Visual Basic .

  • Budeme vloženie modulu pomocou menu, Vložiť ' .

  • Vytvoríme podprogram s názvom 'SplittingNames' .

  • Potrebujeme 6 premenných. Jeden na ukladanie hodnôt buniek, s ktorými budeme manipulovať. Druhý pre uloženie polohy prvej medzery v reťazci, tretí pre uloženie polohy poslednej medzery v reťazci, štvrtý pre uloženie čísla posledného riadku, piaty a šiesty pre riadok a stĺpec, ktoré použijeme na tlač hodnôt v susedných bunkách.

  • Aby sme zistili posledný použitý riadok v hárku, musíme použiť nasledujúci kód.

Tento kód najskôr vyberie bunku B1 a potom v rovnakom stĺpci vyberie poslednú použitú bunku a potom premennej „LastRow“ priradíme číslo riadku bunky.

  • Teraz, aby sme manipulovali so všetkými bunkami v stĺpci B, spustíme slučku „pre“ .

  • Budeme ukladať hodnotu buniek stĺpca B z riadku 2 do riadku 1201 jeden po druhom do premennej 's', aby sme s nimi mohli manipulovať.

  • Musíme nastaviť hodnotu premennej „Stĺpec“ na 3, pretože musíme napísať rozdelené názvy do C (3. stĺpec) a do ďalšieho stĺpca.

  • Ak je reťazec iba jedno slovo, znamená to, že v reťazci nie je miesto, potom chceme, aby bol ako výstup samotný reťazec. Za týmto účelom zadáme podmienku pomocou príkazu „If and Else“ so znakom hviezdičky (označujúcim jeden alebo viac znakov) takto:

  • Ak je v reťazci miesto, chceme reťazec rozdeliť. Na to isté sme použili funkciu INSTR a INSTRREV na zistenie polohy prvého priestoru a poslednej pozície vesmíru. Pomôže nám to nájsť prvé a posledné slovo v reťazci.

Funkcia INSTR preberá argument uvedený nižšie:

Podrobnosti argumentu

  • Štart: Z ktorej pozície začať.
  • String1: Musíme dať hľadaný reťazcový výraz.
  • String2: Musíme zadať hľadaný reťazcový výraz.

Porovnávané ako VbCompareMethod: Zadanie metódy porovnávania. Štandardne je to binárne porovnanie.

  • Musíme použiť VBA VĽAVO funkciu extrahovať ľavej znaky z reťazca. Použili sme „Last Space-1“ na získanie ľavých znakov pred posledným priestorom.

Na extrahovanie správnych znakov z reťazca za prvou medzerou musíme použiť funkcie PRAVÝ a LEN .

Makro je napísané. Teraz už stačí makro spustiť pomocou klávesu F5 .

Kód:

 Sub SplittingNames () Dim s As String Dim FirstSpace As Long Dim LastSPace As Long Dim LastRow As Long Dim Row As Long Dim Column As Long Sheet1.Range ("B1"). Select Selection.End (xlDown) .Select LastRow = ActiveCell. Riadok pre riadok = 2 k LastRow s = Sheet1.Cells (riadok, 2). Stĺpec hodnoty = 3 Ak je ako "* *", potom FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (riadok, stĺpec). Value = Left (s, LastSPace - 1) Sheet1.Cells (Row, Column + 1). Value = Right (s, Len (s) - FirstSpace) Else Sheet1.Cells (Row, Stĺpec) .Hodnota = s Koniec Ak Ďalej Koniec Sub 

Teraz máme výsledok.