Obsah
Táto ďalšia časť našich operácií s textom v tabuľkách je venovaná extrakcii. Zistite spôsoby extrakcie rôznych údajov - textu, znakov, čísel, adries URL, e-mailových adries, dátumu & času atď. - z rôznych pozícií vo viacerých bunkách hárkov Google naraz.
Vzorce v tabuľkách Google na extrahovanie textu a čísel z reťazcov
Vzorce v tabuľkách Google sú všetko. Zatiaľ čo niektoré kombinácie pridávajú text & čísla a odstraňujú rôzne znaky, niektoré z nich tiež extrahujú text, čísla, samostatné znaky atď.
Výpis údajov podľa pozície: prvý/posledný/stredný N znakov
Najjednoduchšie funkcie, s ktorými si poradíte, keď sa chystáte vybrať údaje z buniek hárkov Google, sú LEFT, RIGHT a MID. Získajú akékoľvek údaje podľa pozície.
Výpis údajov zo začiatku buniek v hárkoch Google
Pomocou funkcie LEFT môžete ľahko vytiahnuť prvých N znakov:
LEFT(reťazec,[počet_znakov])- reťazec je text, z ktorého chcete získať údaje.
- počet_znakov je počet znakov, ktoré sa majú odstrániť, počnúc zľava.
Tu je najjednoduchší príklad: odstráňme z telefónnych čísel kódy krajín:
Ako vidíte, kódy krajín majú na začiatku buniek 6 symbolov, takže vzorec, ktorý potrebujete, je:
=LEFT(A2,6)
Tip: ArrayFormula umožní získať 6 znakov z celého rozsahu naraz:
=ArrayFormula(LEFT(A2:A7,6))
Výpis údajov z konca buniek v hárkoch Google
Ak chcete z buniek vytiahnuť posledných N znakov, použite namiesto toho funkciu RIGHT:
RIGHT(reťazec,[počet_znakov])- reťazec je stále text (alebo odkaz na bunku), z ktorého sa majú získať údaje.
- počet_znakov je tiež počet znakov, ktoré sa majú zobrať z pravej strany.
Získajme tieto názvy krajín z rovnakých telefónnych čísel:
Zaberajú len 2 znaky a presne to som uviedol vo vzorci:
=PRAVO(A2,2)
Tip: ArrayFormula vám tiež pomôže získať údaje z konca všetkých buniek hárkov Google naraz:
=ArrayFormula(RIGHT(A2:A7,2))
Výpis údajov zo stredu buniek v hárkoch Google
Ak existujú funkcie na extrakciu údajov zo začiatku a konca buniek, musí existovať aj funkcia na extrakciu údajov zo stredu. A áno - existuje.
Nazýva sa MID:
MID(string, starting_at, extract_length)- reťazec - text, z ktorého chcete odstrániť strednú časť.
- starting_at - pozíciu znaku, od ktorého chcete začať získavať údaje.
- extract_length - počet znakov, ktoré potrebujete vytiahnuť.
Na príklade rovnakých telefónnych čísel nájdeme samotné telefónne čísla bez kódov krajín a skratiek krajín:
Keďže kódy krajín končia 6. znakom a 7. je pomlčka, vytiahnem čísla od 8. číslice. A celkovo dostanem 8 číslic:
=MID(A2,8,8)
Tip. Zmena jednej bunky na celý rozsah a jej zabalenie do ArrayFormula vám poskytne výsledok pre každú bunku naraz:
=ArrayFormula(MID(A2:A7,8,8))
Výpis textu/čísel z reťazcov
Niekedy nie je možné extrahovať text podľa pozície (ako je uvedené vyššie). Požadované reťazce sa môžu nachádzať v ľubovoľnej časti buniek a môžu pozostávať z rôzneho počtu znakov, čo vás núti vytvoriť pre každú bunku iný vzorec.
Tabuľky Google by však neboli tabuľkami Google, keby nemali ďalšie funkcie, ktoré pomáhajú extrahovať text z reťazcov.
Zhrňme si niekoľko možných spôsobov, ktoré tabuľky ponúkajú.
Výber údajov pred určitým textom - LEFT+SEARCH
Vždy, keď chcete vybrať údaje, ktoré predchádzajú určitému textu, použite kombináciu LEFT + SEARCH:
- LEVÁ sa používa na vrátenie určitého počtu znakov od začiatku buniek (od ich ľavej strany)
- HĽADAŤ vyhľadá určité znaky/reťazce a zistí ich pozíciu.
Ak ich skombinujete, LEFT vráti počet znakov navrhnutých funkciou SEARCH.
Tu je príklad: ako získate textové kódy pred každým "ea"?
Toto je vzorec, ktorý vám pomôže v podobných prípadoch:
=LEFT(A2,SEARCH("ea",A2)-1)
Vo vzorci je uvedené, čo sa deje:
- SEARCH("ea",A2) hľadá 'ea' v A2 a vracia pozíciu, na ktorej začína 'ea' pre každú bunku - 10.
- Takže na 10. pozícii sa nachádza 'e'. Ale keďže chcem všetko tesne pred 'ea', musím od tejto pozície odpočítať 1. Inak sa vráti aj 'e'. Takže nakoniec dostanem 9.
- LEVÁ pozrie sa na A2 a získa prvých 9 znakov.
Výpis údajov za textom
Existujú aj prostriedky na získanie všetkého, čo nasleduje po určitom textovom reťazci. Tentoraz však nepomôže RIGHT. Namiesto toho príde na rad REGEXREPLACE.
Tip: REGEXREPLACE používa regulárne výrazy. Ak sa vám s nimi nechce pracovať, existuje oveľa jednoduchšie riešenie, ktoré je opísané nižšie. REGEXREPLACE(text, regular_expression, replacement)
- text je reťazec alebo bunka, v ktorej chcete vykonať zmeny
- regular_expression je kombinácia znakov, ktorá označuje hľadanú časť textu
- náhradný je čokoľvek, čo chcete získať namiesto tohto text
Ako ho teda použiť na extrahovanie údajov po určitom texte - v mojom príklade "ea"?
Jednoducho - pomocou tohto vzorca:
=REGEXREPLACE(A2,"(.*)ea(.*)","$2")
Dovoľte mi vysvetliť, ako presne tento vzorec funguje:
- A2 je bunka, z ktorej extrahujem údaje.
- "(.*)ea(.*)" je môj regulárny výraz (alebo ho môžete nazvať maskou). Hľadám znak 'ea' a všetky ostatné znaky dávam do zátvoriek. Existujú 2 skupiny znakov - všetko pred 'ea' je prvá skupina (.*) a všetko za 'ea' je druhá skupina (.*). Celá samotná maska sa dáva do dvojitých úvodzoviek.
- "$2" je to, čo chcem získať - druhá skupina (preto jej číslo 2) z predchádzajúceho argumentu.
Tip. Všetky znaky používané v regulárnych výrazoch sú zhromaždené na tejto špeciálnej stránke.
Výpis čísel z buniek hárkov Google
Čo ak chcete extrahovať len čísla, keď je ich pozícia a čokoľvek pred & po nezáleží?
Pomôžu aj masky (tzv. regulárne výrazy). V skutočnosti vezmem tú istú funkciu REGEXREPLACE a zmením regulárny výraz:
=REGEXREPLACE(A2,"[^[:digit:]]", "")
- A2 je bunka, z ktorej chcem získať tieto čísla.
- "[^[:digit:]]" je regulárny výraz, ktorý akceptuje všetko okrem číslic. Symbol ^caret je výnimka pre číslice.
- "" nahradí všetko okrem číselných znakov "ničím". Alebo inými slovami, úplne ich odstráni a v bunkách ponechá len čísla. Alebo čísla vyťaží :)
Extrahovanie textu s ignorovaním čísel a iných znakov
Podobným spôsobom môžete z buniek tabuliek Google Sheets odstrániť iba abecedné údaje. Skratka pre regulárny výraz, ktorý označuje text, sa nazýva zodpovedajúcim spôsobom - alfa:
=REGEXREPLACE(A2,"[^[:alpha:]]", "")
Tento vzorec berie všetko okrem písmen (A-Z, a-z) a doslova to nahrádza "ničím". Alebo inak povedané, berie len písmená.
Spôsoby extrahovania údajov z buniek hárkov Google bez použitia vzorcov
Ak hľadáte jednoduchý spôsob extrakcie rôznych typov údajov bez použitia vzorcov, ste na správnom mieste. Náš doplnok Power Tools má na to vhodné nástroje.
Extrahovanie rôznych typov údajov pomocou doplnkov Power Tools
Prvý nástroj, ktorý by som vám rád predstavil, sa volá Extract. Robí presne to, čo ste v tomto článku hľadali - extrahuje rôzne typy údajov z buniek hárkov Google.
Používateľsky prívetivé nastavenia
Všetky prípady, ktoré som uviedol vyššie, nie sú riešiteľné len pomocou doplnku. Nástroj je používateľsky prívetivý takže stačí vybrať rozsah, ktorý chcete spracovať, a zaškrtnúť požadované políčka. Žiadne vzorce, žiadne regulárne výrazy.
Pamätáte si na druhý bod tohto článku s REGEXREPLACE a regulárnymi výrazmi? Tu sa dozviete, aké jednoduché je to pre doplnok:
Extra možnosti
Ako vidíte, existujú niektoré ďalšie možnosti (len zaškrtávacie políčka), ktoré môžete rýchle zapnutie/vypnutie aby ste získali čo najpresnejší výsledok:
- Získajte reťazce iba požadovaného prípadu textu.
- Vytiahnite všetky výskyty z každej bunky a umiestnite ich do jednej bunky alebo samostatných stĺpcov.
- Vložte nový stĺpec s výsledkom napravo od zdrojových údajov.
- Vymazanie extrahovaného textu zo zdrojových údajov.
Výpis rôznych typov údajov
Power Tools nielenže extrahuje údaje pred/za/medzi určitými textovými reťazcami a prvými/poslednými N znakmi, ale odstraňuje aj nasledujúce:
- Čísla spolu s ich desatinnými číslami, pričom sa zachovávajú oddeľovače desatinných čísel a tisícov:
Výpis ľubovoľného reťazca údajov z ľubovoľného miesta
K dispozícii je aj možnosť nastaviť si vlastný presný vzor a použiť ho na extrakciu. Výpis podľa masky a jeho zástupné znaky - * a ? - urobiť trik:
- Všetko, čo sa nachádza medzi zátvorkami, môžete napríklad zobraziť pomocou nasledujúcej masky: (*)
- Alebo získajte tie SKU, ktoré majú vo svojich identifikátoroch len 5 čísel: SKU?????
- Alebo, ako ukazujem na snímke nižšie, vytiahnite všetko za každým "ea" v každej bunke: ea*
Výpis dátumu a času z časových značiek
Ako bonus existuje menší nástroj, ktorý z časových značiek extrahuje dátum a čas - nazýva sa Split Date & Time.
Hoci bol vytvorený predovšetkým na rozdeľovanie časových značiek, je dokonale schopný získať jednu z požadovaných jednotiek samostatne:
Stačí vybrať jedno zo zaškrtávacích políčok podľa toho, čo chcete extrahovať - dátum alebo čas - z časových značiek v tabuľkách Google a stlačiť Split . Požadovaná jednotka sa skopíruje do nového stĺpca (alebo nahradí pôvodné údaje, ak zaškrtnete aj posledné políčko):
Tento nástroj je tiež súčasťou doplnku Power Tools, takže keď si ho nainštalujete, aby ste získali akékoľvek údaje z buniek tabuliek Google, máte to úplne pokryté. Ak nie, zanechajte komentár a my vám pomôžeme :)