Jak usunąć znaki specjalne / niechciane w programie Excel

  • Udostępnij To
Michael Brown

W tym artykule dowiesz się, jak usunąć określone znaki z ciągu tekstowego i usunąć niechciane znaki z wielu komórek jednocześnie.

Podczas importowania danych do programu Excel z innego miejsca, cała masa znaków specjalnych może podróżować do arkuszy. Jeszcze bardziej frustrujące jest to, że niektóre znaki są niewidoczne, co powoduje dodatkowe białe miejsce przed, po lub wewnątrz ciągów tekstowych. Ten samouczek zapewnia rozwiązania wszystkich tych problemów, oszczędzając Ci kłopotów z koniecznością przechodzenia przez dane komórka po komórce i oczyszczania niechcianychznaki ręcznie.

    Usuń znak specjalny z komórki Excela

    Aby usunąć określony znak z komórki, zastąp go pustym ciągiem znaków, używając funkcji SUBSTITUTE w jej najprostszej postaci:

    SUBSTITUTE( komórka , char , "")

    Na przykład, aby wyeliminować znak zapytania z A2, wzór w B2 to:

    =SUBSTITUTE(A2, "?", "")

    Aby usunąć znak, który nie występuje na klawiaturze, możesz skopiować/wkleić go do formuły z oryginalnej komórki.

    Na przykład, oto jak możesz pozbyć się odwróconego znaku zapytania:

    =SUBSTITUTE(A2, "Ż", "")

    Ale jeśli niechciana postać jest niewidzialny lub nie kopiuje się poprawnie, jak umieścić go w formule? Po prostu znajdź jego numer kodu, używając funkcji KOD.

    W naszym przypadku niechciany znak ("ż") pojawia się jako ostatni w komórce A2, więc używamy kombinacji funkcji KOD i PRAWDA, aby pobrać jego unikalną wartość kodu, która wynosi 191:

    =CODE(RIGHT(A2))

    Po uzyskaniu kodu postaci, podaj odpowiednią funkcję CHAR do ogólnej formuły powyżej. Dla naszego zestawu danych, formuła przebiega w następujący sposób:

    =SUBSTITUTE(A2, CHAR(191),"")

    Uwaga. Funkcja SUBSTITUTE jest rozróżnianie wielkości liter Należy o tym pamiętać, jeśli niepożądany znak jest literą.

    Usuń wiele znaków z łańcucha

    W jednym z poprzednich artykułów przyjrzeliśmy się, jak usunąć określone znaki z ciągów w Excelu poprzez zagnieżdżenie kilku funkcji SUBSTITUTE jedna w drugą. To samo podejście można wykorzystać do wyeliminowania dwóch lub więcej niechcianych znaków za jednym zamachem:

    SUBSTYTUT(SUBSTYTUT(SUBSTYTUT( komórka , char1 , ""), char2 , ""), char3 , "")

    Na przykład, aby zlikwidować normalne wykrzykniki i znaki zapytania, a także te odwrócone z ciągu tekstowego w A2, użyj tej formuły:

    =SUBSTYTUT(SUBSTYTUT(SUBSTYTUT(SUBSTYTUT(A2, "!", ""), "¡", ""), "?", ""), "Ż", "")

    To samo można zrobić za pomocą funkcji CHAR, gdzie 161 to kod znaku dla "¡", a 191 to kod znaku dla "ż":

    =SUBSTYTUT(SUBSTYTUT(SUBSTYTUT(SUBSTYTUT(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")

    Zagnieżdżone funkcje SUBSTITUTE działają dobrze dla rozsądnej liczby znaków, ale jeśli masz dziesiątki znaków do usunięcia, formuła staje się zbyt długa i trudna do zarządzania. Następny przykład demonstruje bardziej kompaktowe i eleganckie rozwiązanie.

    Usuń wszystkie niechciane znaki za jednym razem

    Rozwiązanie działa tylko w programie Excel dla Microsoft 365

    Jak zapewne wiesz, Excel 365 posiada specjalną funkcję, która umożliwia tworzenie własnych funkcji, w tym takich, które obliczają rekurencyjnie. Ta nowa funkcja nosi nazwę LAMBDA, a pełne informacje na jej temat znajdziesz w podlinkowanym wyżej tutorialu. Poniżej zilustruję tę koncepcję na kilku praktycznych przykładach.

    Własna funkcja LAMBDA do usuń niechciane znaki jest następująca:

    =LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string))

    Aby móc używać tej funkcji w swoich arkuszach, musisz najpierw nadać jej nazwę. W tym celu naciśnij Ctrl + F3, aby otworzyć okno dialogowe Nazwa Kierownik , a następnie zdefiniować a Nowa nazwa w ten sposób:

    1. W Nazwa w polu wpisać nazwę funkcji: RemoveChars .
    2. Ustaw zakres na Workbook .
    3. W Dotyczy pole, wklej powyższą formułę.
    4. Opcjonalnie można wprowadzić opis parametrów w Uwagi Parametry zostaną wyświetlone po wpisaniu formuły w komórce.
    5. Kliknij OK aby zapisać nową funkcję.

    Szczegółowe instrukcje znajdziesz w rozdziale Jak nazwać niestandardową funkcję LAMBDA.

    Gdy funkcja otrzyma nazwę, można się do niej odwoływać jak do każdej rodzimej formuły.

    Z punktu widzenia użytkownika, składnia naszej niestandardowej funkcji jest tak prosta, jak to:

    RemoveChars(string, chars)

    Gdzie:

    • String - jest oryginalnym łańcuchem lub odniesieniem do komórki/zakresu zawierającego łańcuch(i).
    • Chars - znaki do usunięcia. Mogą być reprezentowane przez ciąg tekstowy lub odwołanie do komórki.

    Dla wygody wprowadzamy niechciane znaki do jakiejś komórki, powiedzmy D2. Aby usunąć te znaki z A2, formuła brzmi:

    =RemoveChars(A2, $D$2)

    Aby formuła działała poprawnie, należy zwrócić uwagę na następujące rzeczy:

    • W D2 znaki są wymienione bez spacji, chyba że chcesz wyeliminować również spacje.
    • Adres komórki zawierającej znaki specjalne jest zablokowany znakiem $ ($D$2), aby zapobiec zmianie odwołania podczas kopiowania formuły do poniższych komórek.

    A potem wystarczy, że przeciągniemy formułę w dół i mamy wszystkie znaki wymienione w D2 usunięte z komórek A2 do A6:

    Aby wyczyścić wiele komórek za pomocą jednej formuły, dostarcz zakres A2:A6 dla 1. argumentu:

    =RemoveChars(A2:A6, D2)

    Ponieważ formuła jest wprowadzana tylko w najwyższej komórce, nie musisz się martwić o blokowanie współrzędnych komórki - odwołanie względne (D2) działa w tym przypadku bez zarzutu. A dzięki obsłudze tablic dynamicznych formuła rozlewa się automatycznie do wszystkich komórek, do których się odwołuje:

    Usuwanie predefiniowanego zestawu znaków

    Aby usunąć predefiniowany zestaw znaków z wielu komórek, można stworzyć kolejną LAMBDĘ, która wywoła główną RemoveChars funkcji i określić niepożądane znaki w 2. parametrze, np:

    Aby usunąć znaki specjalne utworzyliśmy funkcję o nazwie RemoveSpecialChars :

    =LAMBDA(string, RemoveChars(string, "?ż!¡*%#@^"))

    Do usuwać numery z ciągów tekstowych, stworzyliśmy jeszcze jedną funkcję o nazwie RemoveNumbers :

    =LAMBDA(string, RemoveChars(string, "0123456789"))

    Obie powyższe funkcje są super łatwe w użyciu, ponieważ wymagają tylko jednego argumentu - oryginalnego ciągu.

    Aby wyeliminować znaki specjalne z A2, wzór to:

    =RemoveSpecialChars(A2)

    Aby usunąć tylko znaki numeryczne:

    =RemoveNumbers(A2)

    Jak działa ta funkcja:

    W istocie. RemoveChars Funkcja zapętla się przez listę znaki i usuwa jeden znak po drugim. Przed każdym wywołaniem rekurencyjnym funkcja JEŻELI sprawdza pozostałe znaki. Jeżeli znaki łańcuch nie jest pusty (znaki""), funkcja wywołuje się sama. Gdy tylko ostatni znak zostanie przetworzony, formuła zwraca ciąg to jego obecna forma i wyjścia.

    Aby uzyskać szczegółowy podział formuły, zobacz rekursywne LAMBDA do usuwania niechcianych znaków.

    Usuń znaki specjalne za pomocą VBA

    Funkcje działają we wszystkich wersjach programu Excel

    Jeśli funkcja LAMBDA nie jest dostępna w Twoim Excelu, nic nie stoi na przeszkodzie, abyś stworzył podobną funkcję za pomocą VBA. Funkcję zdefiniowaną przez użytkownika (UDF) można napisać na dwa sposoby.

    Funkcja niestandardowa do usuwania znaków specjalnych rekursywny :

    Kod ten emuluje logikę omawianej powyżej funkcji LAMBDA.

    Function RemoveUnwantedChars(str As String , chars As String ) If ( "" chars) Then str = Replace(str, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveUnwantedChars = RemoveUnwantedChars(str, chars) Else RemoveUnwantedChars = str End If End Function

    Funkcja niestandardowa do usuwania znaków specjalnych nierekursywny :

    Tutaj przechodzimy przez niechciane znaki od 1 do Len(chars) i zastępujemy te znalezione w oryginalnym łańcuchu niczym. Funkcja MID wyciąga niechciane znaki jeden po drugim i przekazuje je do funkcji Replace.

    Function RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveUnwantedChars = str End Function

    Wstaw jeden z powyższych kodów do swojego skoroszytu, jak wyjaśniono w Jak wstawić kod VBA w Excelu, a twoja funkcja niestandardowa jest gotowa do użycia.

    Aby nie pomylić naszej nowej funkcji zdefiniowanej przez użytkownika z funkcją zdefiniowaną przez Lambdę, nazwaliśmy ją inaczej:

    RemoveUnwantedChars(string, chars)

    Zakładając, że oryginalny ciąg znajduje się w A2, a niepożądane znaki w D2, możemy pozbyć się ich za pomocą tego wzoru:

    = RemoveUnwantedChars(A2, $D$2)

    Funkcja niestandardowa z zakodowanymi znakami

    Jeśli nie chcesz zawracać sobie głowy dostarczaniem znaków specjalnych dla każdej formuły, możesz je określić bezpośrednio w kodzie:

    Function RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Long chars = "?¿!¡*%#$(){}[]^&/~+-" For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveSpecialChars = str End Function

    Należy pamiętać, że powyższy kod służy do celów demonstracyjnych. Dla praktycznego użytku, upewnij się, że wszystkie znaki, które chcesz usunąć, są zawarte w następującej linii:

    chars = "?ż!¡*%#$(){}[]^&/"

    Ta niestandardowa funkcja nosi nazwę RemoveSpecialChars i wymaga tylko jednego argumentu - oryginalnego ciągu:

    RemoveSpecialChars(string)

    Aby pozbawić nasz zbiór danych znaków specjalnych, wzór to:

    =RemoveSpecialChars(A2)

    Usuń niedrukowalne znaki w programie Excel

    Microsoft Excel posiada specjalną funkcję do usuwania niedrukujących się znaków - funkcję CLEAN. Technicznie rzecz biorąc, usuwa ona pierwsze 32 znaki w 7-bitowym zestawie ASCII (kody od 0 do 31).

    Na przykład, aby usunąć znaki niedrukowalne z A2, oto wzór, którego należy użyć:

    =CLEAN(A2)

    To wyeliminuje znaki niedrukowane, ale spacje przed/po tekście i między słowami pozostaną.

    Aby pozbyć się dodatkowe miejsca , zawiń formułę CLEAN w funkcję TRIM:

    =TRIM(CLEAN(A2))

    Teraz wszystkie wiodące i ciągnące się spacje są usuwane, a spacje pomiędzy nimi są redukowane do pojedynczego znaku spacji:

    Jeśli chcesz usunąć absolutnie wszystkie przestrzenie wewnątrz łańcucha, to dodatkowo zastępuje znak spacji (kod 32) pustym łańcuchem:

    =TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))

    Niektóre spacje lub inne niewidoczne znaki nadal pozostają w Twoim arkuszu? Oznacza to, że te znaki mają różne wartości w zestawie znaków Unicode.

    Na przykład, kod znaku przestrzeń niełamliwa ( ) wynosi 160 i można go oczyścić za pomocą tego wzoru:

    =SUBSTITUTE(A2, CHAR(160)," ")

    Aby wymazać szczególny znak niedrukujący , musisz najpierw znaleźć jego wartość kodową. Szczegółowe instrukcje i przykłady wzorów znajdują się tutaj: Jak usunąć określony znak niedrukujący.

    Usuwanie znaków specjalnych za pomocą Ultimate Suite

    Obsługa programu Excel dla Microsoft 365, Excel 2019 - 2010

    W tym ostatnim przykładzie pozwolę sobie pokazać najprostszy sposób na usunięcie znaków specjalnych w Excelu. Mając zainstalowany Ultimate Suite, należy zrobić to tak:

    1. Na Dane Ablebits zakładka, w Tekst grupa, kliknij Usuń > Usuń znaki .

  • W okienku dodatku wybierz zakres źródłowy, zaznacz Usuń zestawy znaków i wybrać żądaną opcję z listy rozwijanej ( Symbole & znaki interpunkcyjne w tym przykładzie).
  • Uderz w Usuń przycisk.
  • W jednej chwili uzyskasz doskonały efekt:

    Jeśli coś pójdzie nie tak, nie martw się - kopia zapasowa arkusza zostanie utworzona automatycznie jako Wykonaj kopię zapasową tego arkusza pole jest domyślnie zaznaczone.

    Jesteście ciekawi jak wypróbować nasze narzędzie Remove? Link do wersji ewaluacyjnej znajduje się tuż poniżej. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu w przyszłym tygodniu!

    Dostępne pliki do pobrania

    Usuwanie znaków specjalnych - przykłady (plik .xlsm)

    Ultimate Suite - wersja próbna (plik .exe)

    Michael Brown jest oddanym entuzjastą technologii z pasją do upraszczania złożonych procesów za pomocą narzędzi programowych. Dzięki ponad dziesięcioletniemu doświadczeniu w branży technologicznej doskonalił swoje umiejętności w programach Microsoft Excel i Outlook, a także w Arkuszach i Dokumentach Google. Blog Michaela jest poświęcony dzieleniu się swoją wiedzą i doświadczeniem z innymi, dostarczając łatwych do zastosowania wskazówek i samouczków w celu poprawy produktywności i wydajności. Niezależnie od tego, czy jesteś doświadczonym profesjonalistą, czy początkującym, blog Michaela oferuje cenne spostrzeżenia i praktyczne porady dotyczące maksymalnego wykorzystania tych niezbędnych narzędzi programowych.