Sisukord
See järgmine osa meie operatsioonidest tekstiga tabelites on pühendatud ekstraheerimisele. Leia välja viisid, kuidas ekstraheerida erinevaid andmeid - teksti, tähemärke, numbreid, URL-aadresse, e-posti aadresse, kuupäeva & aega jne - erinevatest positsioonidest mitmes Google Sheetsi lahtris korraga.
Google Sheetsi valemid teksti ja numbrite väljavõtmiseks stringidest
Valemid Google Sheetsis on kõik. Kuigi mõned kombinatsioonid lisavad teksti & numbreid ja eemaldavad erinevaid märke, mõned neist eraldavad ka teksti, numbreid, eraldi märke jne.
Andmete väljavõtmine positsiooni järgi: esimene/viimane/mitte N tähemärki
Kõige lihtsamad funktsioonid, millega Google Sheetsi lahtritest andmeid välja võtta, on LEFT, RIGHT ja MID. Nad saavad mis tahes andmeid positsiooni järgi.
Andmete väljavõtmine Google Sheets'i lahtrite algusest
Saate esimesed N tähemärki hõlpsasti välja tõmmata, kasutades funktsiooni LEFT:
LEFT(string,[number_of_characters])- string on tekst, millest soovite andmeid välja võtta.
- number_of_characters on tähemärkide arv, mis tuleb välja võtta vasakult alustades.
Siin on kõige lihtsam näide: võtame telefoninumbritest välja riigikoodid:
Nagu näete, võtavad riigikoodid 6 sümbolit lahtri alguses, seega on vajalik valem järgmine:
=LEFT(A2,6)
Vihje. ArrayFormula võimaldab saada korraga 6 märki kogu vahemikust:
=ArrayFormula(LEFT(A2:A7,6))
Andmete väljavõtmine Google Sheets'i lahtrite lõpust
Kui soovite lahtritest välja tõmmata viimased N märki, kasutage selle asemel funktsiooni RIGHT:
RIGHT(string,[number_of_characters])- string on endiselt tekst (või lahtriviide), millest andmeid välja võtta.
- number_of_characters on ka paremalt poolt võetavate märkide arv.
Saame, et riigi nimed samadest telefoninumbritest:
Nad võtavad ainult 2 märki ja see on täpselt see, mida ma mainin valemis:
=RIGHT(A2,2)
Vihje. ArrayFormula aitab teil ka andmeid kõigi Google Sheetsi lahtrite lõpust korraga välja võtta:
=ArrayFormula(RIGHT(A2:A7,2))
Andmete väljavõtmine Google Sheets'i lahtrite keskelt
Kui on olemas funktsioonid andmete väljavõtmiseks lahtri algusest ja lõpust, siis peab olema ka funktsioon andmete väljavõtmiseks lahtri keskelt. Ja jah - see on olemas.
Seda nimetatakse MID:
MID(string, starting_at, extract_length)- string - teksti, kust soovite keskosa välja võtta.
- starting_at - selle tähemärgi positsioon, millest soovite andmeid saada.
- extract_length - välja tõmmatavate märkide arv.
Sama telefoninumbri näitel leiame telefoninumbrid ise ilma riigikoodide ja riigi lühendita:
Kuna riigikoodid lõpevad 6. tähega ja 7. on kriips, siis tõmban numbrid alates 8. numbrist. Ja kokku saan 8 numbrit:
=MID(A2,8,8,8)
Vihje. Ühe lahtri muutmine kogu vahemikuks ja selle mähkimine ArrayFormulasse annab tulemuse iga lahtri kohta korraga:
=ArrayFormula(MID(A2:A7,8,8))
Teksti/numbrite väljavõtmine stringidest
Mõnikord ei ole teksti väljavõtmine positsiooni järgi (nagu eespool näidatud) võimalik. Nõutavad stringid võivad asuda mis tahes lahtriosas ja koosneda erinevast arvust tähemärkidest, mis sunnib teid looma iga lahtri jaoks erinevad valemid.
Kuid Google Sheets ei oleks Google Sheets, kui tal ei oleks muid funktsioone, mis aitavad teksti stringidest välja võtta.
Vaatame üle mõned võimalikud viisid, mida arvutustabelid pakuvad.
Andmete väljavõtmine enne teatud teksti - LEFT+SEARCH
Alati, kui soovite väljavõtteid, mis eelnevad teatavale tekstile, kasutage LEFT + SEARCH:
- VÄLJAS kasutatakse teatud arvu tähemärkide tagastamiseks lahtrite algusest (vasakult).
- OTSIMINE otsib teatud tähemärke/jooni ja saab nende asukoha.
Kombineerides neid - ja LEFT annab tagasi SEARCHi poolt soovitatud tähemärkide arvu.
Siin on näide: kuidas eraldada tekstikoodid enne iga "ea"?
See on valem, mis aitab teid sarnastel juhtudel:
=LEFT(A2,SEARCH("ea",A2)-1)
Valemis toimub järgmine asi:
- SEARCH("ea",A2) otsib 'ea' lahtris A2 ja tagastab positsiooni, kus see 'ea' algab iga lahtri kohta - 10.
- Seega 10. positsioon on see, kus asub 'e'. Aga kuna ma tahan kõike vahetult enne 'ea', siis pean sellest positsioonist lahutama 1. Vastasel juhul tagastatakse ka 'e'. Seega saan lõpuks 9.
- VÄLJA vaatab A2 ja saab esimesed 9 märki.
Andmete väljavõtmine pärast teksti
On ka vahendeid, et saada kõik pärast teatud tekstijada. Kuid seekord ei aita RIGHT. Selle asemel võtab omakorda REGEXREPLACE.
Vihje. REGEXREPLACE kasutab regulaarseid väljendeid. Kui te ei ole valmis nendega tegelema, on allpool kirjeldatud palju lihtsam lahendus. REGEXREPLACE(text, regular_expression, replacement)
- tekst on string või lahter, kus soovite teha muudatusi
- regular_expression on tähekombinatsioon, mis tähistab otsitavat tekstiosa.
- asendamine on mis iganes sa tahad saada selle asemel, et tekst
Niisiis, kuidas kasutada seda andmete väljavõtmiseks pärast teatud teksti - minu näites 'ea' -?
Lihtne - kasutades seda valemit:
=REGEXREPLACE(A2,"(.*)ea(.*)","$2")
Lubage mul selgitada, kuidas see valem täpselt toimib:
- A2 on lahter, millest ma andmed välja võtan.
- "(.*)ea(.*)" on minu regulaaravaldis (või võib seda nimetada maskiks). Otsin 'ea' ja panen kõik ülejäänud tähemärgid sulgudesse. Märkide rühmi on 2 - kõik enne 'ea' on esimene rühm (.*) ja kõik pärast 'ea' on teine rühm (.*). Kogu mask ise pannakse topeltkriipsudesse.
- "$2" on see, mida ma tahan saada - teine grupp (seega selle number 2) eelmisest argumendist.
Vihje. Kõik regulaaravaldistes kasutatavad tähemärgid on kogutud sellele erilehele.
Numbrite väljavõtmine Google Sheetsi lahtritest
Mis siis, kui soovite eraldada ainult numbreid, kui nende asukoht ja mis iganes läheb enne & pärast ei ole oluline?
Abiks on ka maskid (ehk regulaaravaldised). Tegelikult võtan sama REGEXREPLACE funktsiooni ja muudan regulaaravaldist:
=REGEXREPLACE(A2,"[^[:digit:]]", "")
- A2 on lahter, kust ma tahan neid numbreid saada.
- "[^[:digit:]]" on regulaaravaldis, mis võtab vastu kõike peale numbrite. See ^caret sümbol on see, mis teeb numbrite puhul erandi.
- "" asendab kõik peale numbrimärkide "mitte midagi". Või teisisõnu, eemaldab selle täielikult, jättes lahtritesse ainult numbrid. Või, eemaldab numbrid :)
Teksti väljavõtmine, ignoreerides numbreid ja muid sümboleid
Sarnaselt saab Google Sheetsi lahtritest välja võtta ainult tähestikuandmeid. Teksti tähistava regulaaravaldise lühendiks on vastavalt - alfa:
=REGEXREPLACE(A2,"[^[:alpha:]]", "")
See valem võtab kõik peale tähtede (A-Z, a-z) ja asendab selle sõna otseses mõttes "mitte millegagi". Või teisiti öeldes võtab välja ainult tähed.
Valemivabad viisid andmete väljavõtmiseks Google Sheetsi lahtritest
Kui otsite lihtsat valemiteta viisi erinevate andmetüüpide väljavõtete tegemiseks, siis olete jõudnud õigesse kohta. Meie lisavõimalus Power Tools pakub just sobivaid vahendeid.
Erinevat tüüpi andmete ekstraheerimine Power Tools'i lisaseadmete abil
Esimene tööriist, mida ma tahaksin teile tutvustada, kannab nime Extract. See teeb täpselt seda, mida te selles artiklis otsite - võtab Google Sheets'i lahtritest välja erinevaid andmetüüpe.
Kasutajasõbralikud seaded
Kõik juhtumid, mida ma eespool käsitlesin, ei ole lihtsalt lisaseadmega lahendatavad. Tööriist on kasutajasõbralik nii et kõik, mida peate tegema, on valida vahemik, mida soovite töödelda, ja märkida nõutavad märkeruudud ära. Ei mingeid valemeid, ei mingeid regulaarseid väljendeid.
Mäletate selle artikli teist punkti REGEXREPLACE ja regulaarseid väljendeid? Siin on see, kui lihtne see on lisavõimalus:
Lisavõimalused
Nagu näete, on mõned lisavõimalused (lihtsalt märkeruudud), mida saab kiiresti sisse/välja lülitada kõige täpsema tulemuse saamiseks:
- Hangib ainult nõutava teksti puhul nõutava teksti stringid.
- Tõmmake igast lahtrist välja kõik esinemised ja paigutage need ühte lahtrisse või eraldi veergudesse.
- Sisestage uus veerg koos tulemusega lähteandmetest paremale.
- Tühjendage väljavõetud tekst lähteandmetest.
Erinevate andmetüüpide väljavõtmine
Power Tools mitte ainult ei eemalda andmeid enne/pärast/peale teatud tekstisõnade ja esimese/viimase N tähemärgi vahel, vaid võtab välja ka järgmised andmed:
- Numbrid koos kümnendkohtadega, säilitades kümnendkohtade/tuhandete eraldajaid:
Väljavõte ükskõik millisest andmestikust kõikjalt
Samuti on võimalus luua oma täpne muster ja kasutada seda väljavõtte tegemiseks. Väljavõte maski järgi ja selle jokerkaardimärgid - * ja ? - teha trikk:
- Näiteks võite tuua välja kõik sulgude vahelised elemendid, kasutades järgmist maski: (*)
- Või saada need SKU-d, mille id-des on ainult 5 numbrit: SKU?????
- Või, nagu ma näitan allpool oleval ekraanipildil, tõmmake kõik pärast iga lahtri "ea": ea*
Kuupäeva ja kellaaja väljavõtmine ajatemplitest
Boonusena on olemas väiksem tööriist, mis ekstraheerib kuupäeva ja kellaaega ajatemplitest - seda nimetatakse Split Date & Time.
Kuigi see loodi eelkõige ajatemplite jagamiseks, on see täiesti võimeline saama ühe soovitud ühiku eraldi:
Lihtsalt valige üks märkeruutudest sõltuvalt sellest, mida soovite Google Sheets'i ajatemplitest välja võtta - kuupäeva või aega - ja vajutage nuppu Jagatud . Vajalik ühik kopeeritakse uude veergu (või see asendab esialgsed andmed, kui valite ka viimase märkeruudu):
See tööriist on samuti osa Power Tools lisandprogrammist, nii et kui sa installeerid selle, et saada mis tahes andmeid Google Sheetsi lahtritest, on see sind täielikult kaetud. Kui mitte, siis jäta kommentaar ja me aitame sind :)