Spis treści
Ten następny kawałek naszych operacji z tekstem w arkuszach kalkulacyjnych jest poświęcony ekstrakcji. Dowiedz się, jak wyodrębnić różne dane - tekst, znaki, liczby, adresy URL, adresy e-mail, data & czas, itp - z różnych pozycji w wielu komórkach Google Sheets jednocześnie.
Formuły arkusza Google do wyodrębniania tekstu i liczb z ciągów znaków
Formuły w Google Sheets są wszystkim. Podczas gdy niektóre kombinacje dodają tekst & liczby i usuwają różne znaki, niektóre z nich również wydobywają tekst, liczby, oddzielne znaki itp.
Wyodrębnij dane według pozycji: pierwsza/ostatnia/środkowa N znaków
Najprostszymi funkcjami, z którymi mamy do czynienia, gdy zamierzamy wyciągnąć dane z komórek Google Sheets, są LEFT, RIGHT i MID. Pobierają one dowolne dane według pozycji.
Wyciągnij dane z początku komórek w Google Sheets
Możesz łatwo wyciągnąć pierwsze N znaków za pomocą funkcji LEWO:
LEFT(string,[number_of_characters])- ciąg to tekst, z którego chcesz wyodrębnić dane.
- liczba_znaków to liczba znaków do wyjęcia, zaczynając od lewej strony.
Oto najprostszy przykład: wyjmijmy kody krajów z numerów telefonów:
Jak widać, kody krajów zajmują 6 symboli na początku komórek, więc formuła, której potrzebujesz, to:
=LEFT(A2,6)
Podpowiedź ArrayFormula pozwoli na uzyskanie 6 znaków z całego zakresu jednocześnie:
=ArrayFormula(LEFT(A2:A7,6))
Wyciągnij dane z końca komórek w Google Sheets
Aby wyciągnąć z komórek ostatnie N znaków, użyj zamiast tego funkcji PRAWDA:
RIGHT(string,[liczba_znaków])- ciąg to nadal tekst (lub odwołanie do komórki), z którego należy wyodrębnić dane.
- liczba_znaków to również liczba znaków do pobrania z prawej strony.
Niech to będą nazwy krajów z tych samych numerów telefonów:
Biorą tylko 2 znaki i to dokładnie te, o których wspominam w formule:
=PRAWDA(A2,2)
Porada ArrayFormula pomoże Ci również wydobyć dane z końca wszystkich komórek Google Sheets jednocześnie:
=ArrayFormula(RIGHT(A2:A7,2))
Wyciąganie danych ze środka komórek w Google Sheets
Skoro istnieją funkcje wyciągające dane z początku i końca komórek, to musi istnieć funkcja wyciągająca dane również ze środka. I tak - istnieje taka funkcja.
To się nazywa MID:
MID(string, begin_at, extract_length)- ciąg - tekst, z którego chcesz wyjąć środkową część.
- zaczynając_na - pozycja znaku, od którego chcemy rozpocząć pobieranie danych.
- długość_wyciągu - liczba znaków, które trzeba wyciągnąć.
Na przykładzie tych samych numerów telefonów, znajdźmy same numery telefonów bez ich kodów krajów i skrótów krajów:
Ponieważ kody krajów kończą się na 6 znaku, a 7 to myślnik, to pociągnę liczby zaczynając od 8 cyfry. I w sumie otrzymam 8 cyfr:
=MID(A2,8,8)
Wskazówka. Zmiana jednej komórki na cały zakres i zawinięcie jej w ArrayFormula zapewni Ci wynik dla każdej komórki jednocześnie:
=ArrayFormula(MID(A2:A7,8,8))
Wyodrębnij tekst/liczby z ciągów znaków
Czasami wyodrębnianie tekstu według pozycji (jak pokazano powyżej) nie jest rozwiązaniem. Wymagane ciągi mogą znajdować się w dowolnej części komórek i składać się z różnej liczby znaków, co zmusza do tworzenia różnych formuł dla każdej komórki.
Ale Google Sheets nie byłby Google Sheets, gdyby nie miał innych funkcji, które pomogą wyodrębnić tekst z ciągów.
Przeanalizujmy kilka możliwych sposobów, jakie oferują arkusze kalkulacyjne.
Wyciągnij dane przed określonym tekstem - LEFT+SEARCH
Zawsze, gdy chcesz wydobyć dane poprzedzające określony tekst, użyj LEWO + SZUKAJ:
- LEWA służy do zwrócenia określonej liczby znaków od początku komórek (od ich lewej strony)
- SZUKAJ szuka określonych znaków/ciągów i uzyskuje ich pozycję.
Połącz je - i LEFT zwróci liczbę znaków sugerowanych przez SEARCH.
Oto przykład: jak wyodrębnić kody tekstowe przed każdym "ea"?
Jest to formuła, która pomoże Ci w podobnych przypadkach:
=LEFT(A2,SEARCH("ea",A2)-1)
Oto, co dzieje się w formule:
- SEARCH("ea",A2) szuka 'ea' w A2 i zwraca pozycję, w której to 'ea' zaczyna się dla każdej komórki - 10.
- Tak więc 10 pozycja to miejsce, gdzie znajduje się 'e'. Ale ponieważ chcę mieć wszystko przed 'ea', muszę odjąć 1 od tej pozycji. W przeciwnym razie 'e' również zostanie zwrócone. Tak więc ostatecznie otrzymam 9.
- LEWA patrzy na A2 i dostaje pierwsze 9 znaków.
Wyciągnij dane po tekście
Istnieją również środki, aby uzyskać wszystko po pewnym ciągu tekstowym. Ale tym razem PRAWDA nie pomoże, zamiast tego REGEXREPLACE bierze swoją kolej.
Wskazówka. REGEXREPLACE używa wyrażeń regularnych. Jeśli nie jesteś gotowy, by się nimi zajmować, istnieje znacznie prostsze rozwiązanie opisane poniżej. REGEXREPLACE(text, regular_expression, replacement)
- tekst to ciąg znaków lub komórka, w której chcemy dokonać zmian
- wyrażenie regularne to kombinacja znaków oznaczająca część tekstu, której szukasz
- wymiana jest tym, co chcesz uzyskać zamiast tego tekst
Jak więc użyć go do wyodrębnienia danych po określonym tekście - "ea" w moim przykładzie?
Łatwo - korzystając z tej formuły:
=REGEXREPLACE(A2,"(.*)ea(.*)","$2")
Pozwól, że wyjaśnię, jak dokładnie działa ta formuła:
- A2 to komórka, z której wyciągam dane.
- "(.*)ea(.*)" to moje wyrażenie regularne (lub można je nazwać maską). Szukam 'ea', a wszystkie inne znaki umieszczam w nawiasach. Są 2 grupy znaków - wszystko przed 'ea' to pierwsza grupa (.*), a wszystko po 'ea' to druga (.*). Całą maskę umieszczam w podwójnych cudzysłowach.
- "$2" jest tym, co chcę uzyskać - drugą grupą (stąd jej numer 2) z poprzedniego argumentu.
Wskazówka. Wszystkie znaki używane w wyrażeniach regularnych są zebrane na tej specjalnej stronie.
Wyodrębnianie liczb z komórek arkusza Google
Co jeśli chcesz wyodrębnić tylko liczby, gdy ich pozycja i cokolwiek idzie przed & after nie ma znaczenia?
Maski (a.k.a. wyrażenia regularne) również pomogą. W rzeczywistości wezmę tę samą funkcję REGEXREPLACE i zmienię wyrażenie regularne:
=REGEXREPLACE(A2,"[^[:cyfra:]]", "")
- A2 to komórka, z której chcę pobrać te liczby.
- "[^[:cyfra:]]" jest wyrażeniem regularnym, które przyjmuje wszystko oprócz cyfr. Ten symbol ^caret jest tym, co robi wyjątek dla cyfr.
- "" zastępuje wszystko oprócz znaków numerycznych "niczym". Albo, innymi słowy, usuwa je całkowicie, pozostawiając w komórkach tylko liczby. Albo, wyciąga liczby :)
Wyodrębnij tekst z pominięciem liczb i innych znaków
W podobny sposób można wyjąć z komórek Google Sheets tylko dane alfabetyczne. Kontrakcja dla wyrażenia regularnego oznaczającego tekst nazywa się odpowiednio - alfa:
=REGEXREPLACE(A2,"[^[:alfa:]]", "")
Ta formuła bierze wszystko oprócz liter (A-Z, a-z) i dosłownie zastępuje je "niczym". Albo, mówiąc inaczej, wyjmuje tylko litery.
Pozbawione formuł sposoby wyodrębniania danych z komórek Arkuszy Google
Jeśli szukasz łatwego, pozbawionego formuł sposobu na wyodrębnienie różnych typów danych, to trafiłeś we właściwe miejsce. Nasz dodatek Power Tools posiada właśnie takie narzędzia.
Wyodrębnianie różnych typów danych przy użyciu dodatków Power Tools
Pierwszym narzędziem, które chciałbym, abyś poznał jest Extract. Robi ono dokładnie to, czego szukałeś w tym artykule - wyciąga różne typy danych z komórek Google Sheets.
Ustawienia przyjazne dla użytkownika
Wszystkie przypadki, które omówiłem powyżej, są nie tylko rozwiązywalne za pomocą dodatku. Narzędzie jest przyjazne dla użytkownika więc wszystko, co musisz zrobić, to wybrać zakres, który chcesz przetworzyć i zaznaczyć wymagane pola wyboru. Żadnych formuł, żadnych wyrażeń regularnych.
Pamiętasz drugi punkt tego artykułu o REGEXREPLACE i wyrażeniach regularnych? Oto jak prosto jest to zrobić w przypadku dodatku:
Opcje dodatkowe
Jak widać, jest kilka opcje dodatkowe (tylko pola wyboru), które można szybkie włączanie/wyłączanie aby uzyskać najbardziej precyzyjny wynik:
- Uzyskaj ciągi znaków o wymaganym tylko przypadku tekstowym.
- Wyciągnij wszystkie wystąpienia z każdej komórki i umieść je w jednej komórce lub oddzielnych kolumnach.
- Wstaw nową kolumnę z wynikiem po prawej stronie danych źródłowych.
- Wyczyść wyodrębniony tekst z danych źródłowych.
Wyciąganie różnych typów danych
Nie tylko Power Tools wydobywa dane przed/po/pomiędzy określonymi ciągami tekstowymi oraz pierwszymi/ostatnimi N znakami; ale także:
- Liczby wraz z ich ułamkami dziesiętnymi z zachowaniem separatorów dziesiętnych/tysięcznych:
Wyciągnij dowolny ciąg danych z każdego miejsca
Jest też opcja ustawienia własnego, dokładnego wzoru i wykorzystania go do ekstrakcji. Wyciąg przez maskę i jego znaki wieloznaczne -. * oraz ? - zrobić sztuczkę:
- Na przykład możesz wydobyć wszystko między nawiasami, używając następującej maski: (*)
- Albo zdobądź te SKU, które mają tylko 5 numerów w swoich ids: SKU?????
- Lub, jak pokazuję na zrzucie ekranu poniżej, wyciągnij wszystko po każdym "ea" w każdej komórce: ea*
Wyodrębnij datę i czas z timestampów
Jako bonus, istnieje mniejsze narzędzie, które będzie wyodrębnić datę i czas z timestamps - to się nazywa Split Date & Time.
Chociaż został stworzony, aby podzielić znaczniki czasu w pierwszej kolejności, jest doskonale zdolny do uzyskania jednej z pożądanych jednostek indywidualnie:
Wystarczy zaznaczyć jedno z pól wyboru w zależności od tego, co chcemy wyodrębnić - datę lub czas - ze znaczników czasu w Google Sheets i kliknąć Podziel się Wymagana jednostka zostanie skopiowana do nowej kolumny (lub zastąpi oryginalne dane, jeśli zaznaczysz również ostatnie pole wyboru):
To narzędzie jest również częścią dodatku Power Tools, więc po zainstalowaniu go, aby uzyskać dowolne dane z komórek Google Sheets, ma cię całkowicie pokryte. Jeśli nie, zostaw komentarz, a pomożemy ci :)