Wiele razy otrzymuję mieszane dane z terenu i serwera do analizy. Dane te są zwykle brudne, mają kolumnę pomieszaną z liczbą i tekstem. Czyszcząc dane przed analizą, oddzielam liczby i tekst w osobnych kolumnach. W tym artykule powiem Ci, jak możesz to zrobić.
Scenariusz:
Więc jeden z naszych znajomych na Exceltip.com zadał to pytanie w sekcji komentarzy. „Jak oddzielić liczby znajdujące się przed tekstem i na końcu tekstu za pomocą formuły Excela. Na przykład 125EvenueStreet i LoveYou3000 itp.”
Do wyodrębniania tekstu używamy RIGHT, LEFT, MID i innych funkcji tekstowych. Musimy tylko znać liczbę tekstów do wyodrębnienia. I tutaj zrobimy to samo najpierw.
Wyodrębnij liczbę i tekst z ciągu, gdy liczba znajduje się na końcu ciągu
Dla powyższego przykładu przygotowałem ten arkusz. W komórce A2 mam ciąg. W komórce B2 chcę część tekstową, a w C2 część liczbową.
Musimy więc tylko znać pozycję, od której zaczyna się numer. Następnie użyjemy funkcji Left i innej. Aby uzyskać pozycję pierwszej liczby, używamy poniższej ogólnej formuły:
Ogólna formuła, aby uzyskać pozycję pierwszej liczby w ciągu:
=MIN(SZUKAJ({0,1,2,3,4,5,6,7,8,9};String_Ref&"0123456789")
To zwróci pozycję pierwszej liczby.
Dla powyższego przykładu napisz tę formułę w dowolnej komórce.
=MIN(SZUKAJ({0,1,2,3,4,5,6,7,8,9};A5&"0123456789"))
Wyodrębnij część tekstową
Zwróci 15, ponieważ pierwsza znaleziona liczba znajduje się na 15. pozycji w tekście. Wyjaśnię to później.
Teraz, aby uzyskać tekst, od lewej wystarczy uzyskać 15-1 znak z ciągu. Więc użyjemy
Funkcja LEWO do wyodrębniania tekstu.
Formuła do wyodrębnienia tekstu z lewej
=LEWO(A5;MIN(SZUKAJ({0,1,2,3,4,5,6,7,8,9};A5&"0123456789"))-1)
Tutaj właśnie odjęliśmy 1 od liczby zwróconej przez MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A5&"0123456789")).
Wyciąg numer części
Teraz, aby uzyskać liczby, wystarczy pobrać znaki liczbowe z pierwszej znalezionej liczby. Więc obliczamy całkowitą długość strunowy i odejmij pozycję pierwszej znalezionej liczby i dodaj 1 do niego. Prosty. Tak, to po prostu brzmi skomplikowanie, jest proste.
Formuła do wyodrębniania liczb z prawej strony
=PRAWO(A5,DŁ(A5)-MIN(SZUKAJ({0,1,2,3,4,5,6,7,8,9};A5&"0123456789"))+1)
Tutaj właśnie otrzymaliśmy całkowitą długość ciągu za pomocą funkcji LEN, a następnie odjęliśmy pozycję pierwszej znalezionej liczby, a następnie dodaliśmy do niej 1. To daje nam całkowitą liczbę liczb. Dowiedz się więcej tutaj o wyodrębnianiu tekstu za pomocą funkcji LEWO i PRAWO programu Excel.
Tak więc część funkcji LEWA i PRAWA jest prosta. Część Tricky to MIN i SEARCH Part, która podaje nam pozycję pierwszego znalezionego numeru. Zrozummy to.
Jak to działa
Wiemy, jak działają funkcje LEFT i RIGHT. Zbadamy główną część tej formuły, która pobiera pozycję pierwszej znalezionej liczby, czyli: MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},String&"0123456789 ")
Funkcja SEARCH zwraca pozycję tekstu w ciągu. Funkcja SZUKAJ('tekst','ciąg') przyjmuje dwa argumenty, pierwszy tekst, który chcesz przeszukać, drugi ciąg, w którym chcesz przeszukać.
-
- Tutaj w SZUKAJU, na pozycji tekstu mamy tablicę liczb od 0 do 9. A na pozycji łańcucha mamy ciąg, który jest połączony z "0123456789" za pomocą & operator. Czemu? Powiem ci.
- Każdy element w tablicy {0,1,2,3,4,5,6,7,8,9} zostanie przeszukany w danym ciągu i zwróci swoją pozycję w postaci tablicy string o tym samym indeksie w tablicy.
- Jeśli jakakolwiek wartość nie zostanie znaleziona, spowoduje to błąd. Stąd wszystkie formuły będą skutkować błędem. Aby tego uniknąć, połączyliśmy liczby „0123456789” w tekście. Aby zawsze znajdował każdą liczbę w łańcuchu. Te liczby są w końcu więc nie sprawią żadnego problemu.
- Teraz Funkcja MIN zwraca najmniejszą wartość z tablicy zwróconej przez funkcję SZUKAJ. Ta najmniejsza wartość będzie pierwszą liczbą w ciągu. Teraz korzystając z funkcji LICZBA oraz W LEWO i W PRAWO, możemy rozdzielić części tekstowe i tekstowe.
Przeanalizujmy nasz przykład. W A5 mamy ciąg, który zawiera nazwę ulicy i numer domu. Musimy je rozdzielić na różne komórki.
Najpierw zobaczmy, jak otrzymaliśmy naszą pozycję pierwszej liczby w łańcuchu.
-
- MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A5&"0123456789")): przełoży się to na MIN(SEARCH({0,1,2,3, 4,5,6,7,8,9}”,Monta270123456789”))
Teraz, jak wyjaśniłem, wyszukiwanie przeszuka każdą liczbę w tablicy {0,1,2,3,4,5,6,7,8,9} w Monta270123456789 i zwróci swoją pozycję w formie tablicowej. Zwróconą tablicą będzie {8,9,6,11,12,13,14,7,16,17}. Jak?
0 będzie wyszukiwane w ciągu. Znajduje się na 8 pozycji. Dlatego naszym pierwszym elementem jest 8. Zauważ, że nasz oryginalny tekst ma tylko 7 znaków. Zdobyć. 0 nie jest częścią Monta27.
Następny 1 zostanie przeszukany w ciągu i również nie jest częścią oryginalnego ciągu, a my otrzymamy jego pozycję 9.
Następne 2 zostaną przeszukane. Ponieważ jest to część oryginalnego ciągu, otrzymujemy jego indeks jako 6.
Podobnie każdy element znajduje się w jakimś miejscu.
-
- Teraz ta tablica jest przekazywana do funkcji MIN jako MIN({8,9,6,11,12,13,14,7,16,17}). MIN zwraca 6, która jest pozycją pierwszej liczby znalezionej w oryginalnym tekście.
A historia po tym jest dość prosta. Używamy tej liczby, wyodrębnij tekst i liczby za pomocą funkcji LEWO i PRAWO.
- Teraz ta tablica jest przekazywana do funkcji MIN jako MIN({8,9,6,11,12,13,14,7,16,17}). MIN zwraca 6, która jest pozycją pierwszej liczby znalezionej w oryginalnym tekście.
Wyodrębnij liczbę i tekst z ciągu, gdy liczba znajduje się na początku ciągu
W powyższym przykładzie Number znajdowało się na końcu ciągu. Jak wyodrębnić numer i tekst, gdy numer jest na początku.
Przygotowałem podobną tabelę jak powyżej. Po prostu ma numer na początku.
Tutaj użyjemy innej techniki. Policzymy długość liczb (która wynosi tutaj 2) i wydobędziemy tę liczbę znaków z lewej strony ciągu.
Tak więc metoda to =LEWO (ciąg, liczba liczb)
Aby policzyć liczbę znaków, to jest Formuła.
Ogólna formuła do zliczania liczb:
= SUMA(DŁ(ciąg)-DŁ(PODSTAW(ciąg;{"0","1","2","3","4","5","6","7","8" ,"9"},"))
Tutaj,
-
-
- Funkcja SUBSTITUTE zamieni każdy znaleziony numer na „” (puste). Jeśli liczba zostanie znaleziona podstawiona ti i nowy łańcuch zostanie dodany do tablicy, w przeciwnym razie oryginalny łańcuch zostanie dodany do tablicy. W ten sposób otrzymamy tablicę 10 ciągów.
- Teraz funkcja LEN zwróci długość znaków w tablicy tych ciągów.
- Następnie od długości oryginalnych napisów odejmiemy długość każdego napisu zwróconego przez funkcję SUBSTITUTE. To ponownie zwróci tablicę.
- Teraz SUM doda wszystkie te liczby. Jest to liczba liczb w ciągu.
-
Wyodrębnij część numeru z ciągu
Skoro znamy długość liczb w strunowy, podstawimy tę funkcję w LEWO.
Ponieważ mamy nasz ciąg A11, nasz:
Formuła do wyodrębniania liczb z LEWEJ
=LEWO(A11;SUMA(DŁ(A11)-DŁ(ZAMIENNIK(A11;{"0","1","1","2","3","4","5","6","7" ,"8","9"},""))))
Wyodrębnij część tekstową z ciągu
Ponieważ znamy liczbę liczb, możemy odjąć ją od całkowitej długości ciągu, aby uzyskać alfabet liczb w ciągu, a następnie użyć funkcji right, aby wyodrębnić tę liczbę znaków z prawej strony ciągu.
Formuła do wyodrębnienia tekstu z PRAWEGO
=PRAWY(A11;DŁ(A2)-SUMA(DŁ(A11)-DŁ(ZAMIENNIK(A11;{"0","1","2","3","4","5","6 ","7","8","9"},""))))
Jak to działa
Główną częścią obu formuł jest SUM(LEN(A11)-LEN(SUBSTITUTE(A11,{"0","1","2","3","4","5","6"," 7","8","9"},""))) obliczające pierwsze wystąpienie liczby. Dopiero po znalezieniu tego jesteśmy w stanie podzielić tekst i liczbę za pomocą funkcji LEWO. Więc zrozummy to.
-
-
- ZAMIENNIK(A11,{"0","1","2","3","4","5","6","7","8","9"},""): Ta część zwraca tablicę ciągów w A11 po zastąpieniu tych liczb wartością nic/pustą („”). Do 27Monta zwróci {"27Monta","27Monta","7Monta","27Monta","27Monta","27Monta","27Monta","2Monta","27Monta","27Monta"}.
- DŁ(ZAMIENNIK(A11;{"0","1","2","3","4","5","6","7","8","9"};"" )): Teraz część SUBSTITUTE jest otoczona funkcją LEN. Ta zwracana długość tekstów w tablicy zwracana przez funkcję SUBSTITUTE. W rezultacie będziemy mieli {7,7,6,7,7,7,7,7,6,7,7}.
- DŁ(A11)-DŁ(ZAMIENNIK(A11,{"0","1","2","3","4","5","6","7","8","9 "},")): Tutaj odejmujemy każdą liczbę zwróconą przez powyższą część od długości rzeczywistego ciągu. Długość oryginalnego tekstu wynosi 7. Stąd będziemy mieli {7-7,7-7,7-6,….}. W końcu będziemy mieli {0,0,1,0,0,0,0,1,0,0}.
- SUMA(DŁ(A11)-DŁ(ZAMIENNIK(A11;{"0","1","2","3","4","5","6","7","8"; "9"},"")): Tutaj użyliśmy SUMA do zsumowania tablicy zwróconej przez powyższą część funkcji. To da 2. Co jest liczbą liczb w łańcuchu.
-
Teraz za pomocą tego możemy wyodrębnić teksty i liczbę i podzielić je na różne komórki. Ta metoda będzie działać zarówno z tekstem typu, gdy liczba jest na początku, jak i kiedy jest na końcu. Wystarczy odpowiednio użyć funkcji LEWO i PRAWO.
Użyj funkcji SplitNumText, aby podzielić liczby i teksty z ciągu
Powyższe metody to są nieco złożone i nie są przydatne, gdy tekst i liczby są mieszane. Aby podzielić tekst i liczby, użyj tej funkcji zdefiniowanej przez użytkownika.
Składnia:
=SplitNumText(ciąg, op)
Strunowy: Ciąg, który chcesz podzielić.
Operacja: to jest logiczne. Przekaż 0 lub fałszywe aby uzyskać część tekstową. W przypadku części liczbowej należy przekazać prawda lub dowolna liczba większa niż 0.
Na przykład, jeśli ciąg znajduje się w A20, to
Formuła do wyodrębniania liczb z ciągu znaków to:
=Podziel.liczbatekst(A20;1)
I
Formuła wyodrębniania tekstu z ciągu znaków to:
=Podziel.liczbatekst(A20,0)
Skopiuj poniższy kod w module VBA, aby powyższa formuła działała.
Function SplitNumText(str As String, op As Boolean) num = "" txt = "" For i = 1 To Len(str) If IsNumeric(Mid(str, i, 1)) Then num = num & Mid(str, i , 1) Else txt = txt & Mid(str, i, 1) End If Next i If op = True Then SplitNumText = numer Else SplitNumText = txt End If End Function
Ten kod po prostu sprawdza każdy znak w ciągu, czy jest to liczba, czy nie. Jeśli jest to liczba, to jest przechowywana w zmiennej num, w przeciwnym razie w zmiennej txt. Jeśli użytkownik zgłosi true dla op, zwracana jest liczba, w przeciwnym razie zwracany jest txt.
Moim zdaniem jest to najlepszy sposób na oddzielenie liczby i tekstu od ciągu.
Możesz pobrać skoroszyt tutaj, jeśli chcesz.
Więc tak, to są sposoby na dzielenie tekstu i liczb w różnych komórkach. Daj mi znać, jeśli masz jakiekolwiek wątpliwości lub lepsze rozwiązanie w sekcji komentarzy poniżej. Zawsze fajnie jest wchodzić w interakcje z facetami.
Kliknij poniższy link, aby pobrać działający plik:
Podziel numer i tekst z komórkiPopularne artykuły:
50 skrótów Excela, aby zwiększyć wydajność
Funkcja WYSZUKAJ.PIONOWO w programie Excel
LICZ.JEŻELI w Excelu 2016
Jak korzystać z funkcji SUMIF w programie Excel?