Ak sa dostanete do situácie, v ktorej budete potrebovať iba prvé slovo v každom riadku bunky, nie celý znak, musíte si prečítať tento článok. Nasledujúci tutoriál vám pomôže pri získavaní iba prvého slova pomocou kódu VBA v programe Excel.
V tomto článku sa zameriame na to, ako ponechať prvé slovo iba v každom riadku bunky oddelenej bodkočiarkou prostredníctvom makrokódov.
Otázka: Údaje, v ktorých pracujem, majú niekedy viac riadkov v každej bunke a chcem extrahovať iba prvé slovo.
Pôvodnú otázku nájdete tu
Nasleduje snímka vstupného textu (pred hárkom)
Nasleduje snímka vstupného textu (Po hárku) v stĺpci A & vyžaduje výstup v stĺpci B; pozrite sa na nižšie uvedenú snímku:
Ak chcete získať kód; na spustenie editora VB musíme postupovať podľa nižšie uvedených krokov
- Kliknite na kartu Vývojár
- V skupine Kód vyberte položku Visual Basic
- Skopírujte nižšie uvedený kód do štandardného modulu
Funkcia FirstWordOnly (rng Ako rozsah) Dim Arr () Ako Variant Dim Count Ako Integer Dim i As Integer Count = Len (rng) - Len (Replace (rng, Chr (10), "")) If Count> 0 Then ReDim Arr (0 počítať) Pre i = 0 počítať, ak i = 0 Potom Arr (i) = Vľavo (rng, InStr (1, rng, "") - 1) ElseIf j = 0 Potom j = InStr (1, rng, Chr (10)) Arr (i) = Mid (rng, j + 1, InStr (j, rng, "") - j) Ostatné j = InStr (j + 1, rng, Chr (10)) Arr (i) = Mid (rng, j + 1, InStr (j, rng, "") - j) End If Next FirstWordOnly = Pripojiť (Arr, ";") Inak Ak InStr (1, rng, "")> 0 Potom FirstWordOnly = Vľavo (rng, InStr (1, rng, "")) Else FirstWordOnly = rng End If End If End Funkcia
Teraz je kód VBA pripravený na použitie; použijeme novo vytvorenú funkciu definovanú používateľom, tj „FirstWordOnly“ v časti Pred hárkom.
- Na získanie výstupu pomocou UDF v bunke B2 bude vzorec
- = FirstWordOnly (A2)
Vysvetlenie kódu:
Vo vyššie uvedenom kóde sme použili funkcie COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.
- „Len (rng)“; toto skontroluje dĺžku bunky, o ktorej hovoríme
- „Nahradiť (rng, Chr (10),“ „)“; Kód skontroluje Chr (10), tj zlom riadka v každom riadku, a potom ho nahradí dvojitou úvodzovkou (nič)
- „Počet = Len (rng) - Len (Nahradiť (rng, Chr (10)," "))"; Count nahradí rozdiel v dĺžke každého riadku po nahradení zalomenia riadku
- Ak počíta> 0; toto skontroluje, či je dĺžka Count väčšia ako nula a ak je nájdená rovná nule, t.j. bunka je prázdna, potom podmienka IF kód nespustí. Ak to chcete skontrolovať, môžete použiť = FirstWordOnly (A5) v bunke B5 a vráti 0
- Ak bunka nie je prázdna, potom sa použije slučka For s podmienkou IF a s funkciou LEFT načítame prvé slovo
- Ak je v každej bunke viac riadkov, funkcia JOIN pridá bodkočiarku na konci
Záver: Pomocou UDF môžeme pomocou VBA odstrániť všetko v každom riadku bunky okrem prvého slova. Táto funkcia bude fungovať vo všetkých verziách od starých po nové, tj. Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.
Ak sa vám páčili naše blogy, zdieľajte ich so svojimi priateľmi na Facebooku. A tiež nás môžete sledovať na Twitteri a Facebooku.
Radi by sme vás počuli, dajte nám vedieť, ako môžeme zlepšiť, doplniť alebo inovovať našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku