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 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á reťazec v inom reťazci a vráti 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é vyhľ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. Štandardne to 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 s reťazcom , potom funkcia vráti pozíciu, v ktorej sa nájde zhoda.

Ako používať funkciu VBA INSTRREV?

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 - jednu 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 vytlačenie hodnôt v susedných bunky.
  • 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 vyberie poslednú použitú bunku v rovnakom stĺpci 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 ( tretí stĺpec) a do ďalšieho stĺpca.
  • Ak je reťazec iba jedno slovo, znamená to, že v reťazci nie je medzera, 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é slovo a posledné slovo v reťazci.

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

Argument Details

  • Start: From which position to start.
  • String1: We need to give string expression being searched.
  • String2: We need to specify string expression being searched for.

Compared as VbCompareMethod: Specifying Comparing method. By default, it is binary compare.

  • We need to use the VBA LEFT function to extract left characters from the string. We have used ‘Last Space-1’ to get the left characters before the last space.

We need to use the RIGHT and LEN functions to extract the right characters from the string after the first space.

Macro is written. Now we just need to run the macro using the F5 key.

Code:

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.

Zaujímavé články...