VBA InStrRev | Jak používat funkci Excel VBA InStrRev?

Excel VBA INSTRREV

Funkce VBA INSTRREV , ve zkratce „In String Reverse“ , vrací pozici prvního výskytu hledaného řetězce (podřetězce) v jiném řetězci, počínaje od konce řetězce (zprava doleva), ze kterého hledáme prohledávatelný řetězec.

Funkce INSTRREV začne hledat prohledávatelný řetězec od konce řetězce, ve kterém musíme zjistit, ale počítá pozici od začátku. Existuje ještě jedna funkce INSTR vba (zkratka „In String“ ), která také hledá řetězec v jiném řetězci a vrací pozici, ale tato funkce zahájí hledání od začátku řetězce, ze kterého hledáme řetězec, který lze prohledávat.

INSTRREV a INSTR jsou vestavěné funkce String / Text VBA aplikace MS Excel. Můžeme je použít při psaní libovolného makra v editoru Microsoft Visual Basic.

Syntax

Jak vidíme na obrázku výše, existují 2 povinné a 2 volitelné argumenty.

  • StringCheck As String: Toto je povinný argument. Musíme zadat hledaný výraz řetězce.
  • StringMatch As String: Tento argument je také povinný. Musíme zadat hledaný výraz řetězce.
  • Start As Long = -1: Toto je volitelný argument. Určíme číselný výraz. Ve výchozím nastavení trvá -1, což znamená, že hledání začíná na poslední pozici znaku. Pokud zadáme libovolnou kladnou hodnotu, jako je 80, začne se hledat od konce řetězce po těchto 80 znacích vlevo.
  • Porovnat jako VbCompareMethod = vbBinaryCompare tak dlouho: Tento argument je volitelný.

Pro tento argument můžeme určit následující hodnoty.

Návratové hodnoty

  1. Funkce INSTRREV vrací 0, pokud má kontrola řetězce  nulovou délku nebo  není nalezena shoda řetězce nebo argument 'start' > délka shody řetězce .
  2. Tato funkce vrací ‚Null‘ v případě, že kontrola řetězec  nebo řetězec zápas  je ‚Null‘ .
  3. Pokud má shoda řetězce nulovou délku, vrátí se funkce na začátek .
  4. Pokud je nalezena shoda řetězce v rámci kontroly řetězce , vrátí funkce pozici, ve které je nalezena shoda.

Jak používat funkci VBA INSTRREV?

Tuto šablonu VBA INSTRREV Excel si můžete stáhnout zde - Šablona VBA INSTRREV Excel

Předpokládejme, že máme data pro názvy filmů a jejich režiséry. Chceme rozdělit jména režisérů.

Máme data v 1201 řádcích. Pokud tento úkol provedeme ručně, bude to trvat hodně času.

Abychom učinili totéž, použijeme kód VBA. Kroky jsou:

  • Musíme kliknout na příkaz „Visual Basic“, který je k dispozici ve skupině „Code“ na kartě „Developer“, nebo můžeme stisknout Alt + F11 a otevřít editor jazyka Visual Basic .

  • Budeme vložení modulu pomocí menu ‚Vložit‘ .

  • Vytvoříme podprogram s názvem „SplittingNames“ .

  • Potřebujeme 6 proměnných. Jeden pro ukládání hodnot buněk, se kterými budeme manipulovat. Druhý pro uložení pozice prvního prostoru v řetězci, třetí pro uložení polohy posledního prostoru v řetězci, čtvrtý pro uložení čísla posledního řádku, pátý a šestý pro řádek a sloupec, které použijeme k tisku hodnot v sousedních buňkách.

  • Chcete-li zjistit poslední použitý řádek v listu, musíme použít následující kód.

Tento kód nejprve vybere buňku B1 a poté ve posledním sloupci vybere poslední použitou buňku a poté proměnné „LastRow“ přiřadíme číslo řádku buňky.

  • Nyní pro manipulaci se všemi buňkami ve sloupci B spustíme smyčku 'pro' .

  • Uložíme hodnotu buněk sloupce B z řádku 2 do řádku 1201 jeden po druhém do proměnné 's', abychom s nimi manipulovali.

  • Musíme nastavit hodnotu proměnné 'Sloupec' na 3, protože musíme napsat rozdělená jména do C (3. sloupec) a do sloupce dále.

  • Pokud je řetězec pouze jedno slovo, což znamená, že v řetězci není mezera, chceme jako výstup samotný řetězec. Za tímto účelem zadáme podmínku pomocí příkazu „If and Else statement“ se znakem hvězdičky (označujícím jeden nebo více znaků) takto:

  • Pokud je v řetězci mezera, chceme řetězec rozdělit. Abychom učinili totéž, použili jsme funkci INSTR a INSTRREV k vyhledání první pozice vesmíru a poslední pozice prostoru. Pomůže nám najít první slovo a poslední slovo v řetězci.

Funkce INSTR převezme argument níže:

Podrobnosti argumentu

  • Start: Z které pozice začít.
  • Řetězec 1 : Musíme zadat hledaný řetězcový výraz.
  • Řetězec2: Musíme zadat hledaný řetězcový výraz.

Porovnáno jako VbCompareMethod: Určení metody porovnání. Ve výchozím nastavení je to binární porovnání.

  • Musíme použít VBA VLEVO funkci extrahovat levé znaky z řetězce. Použili jsme „Last Space-1“ k získání levých znaků před posledním prostorem.

K extrakci správných znaků z řetězce za první mezerou musíme použít funkce RIGHT a LEN .

Makro je napsáno. Nyní stačí spustit makro pomocí klávesy 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. Řádek pro řádek = 2 k LastRow s = Sheet1.Cells (řádek, 2). Sloupec hodnoty = 3 Je-li jako "* *", pak FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (Row, Column) .Value = Left (s, LastSPace - 1) Sheet1.Cells (Row, Column + 1) .Value = Right (s, Len (s) - FirstSpace) Else Sheet1.Cells (Row, Column) .Value = s End If Next End Sub 

Nyní máme výsledek.


$config[zx-auto] not found$config[zx-overlay] not found