Baza wiedzy / Excel

USUŃ.ZBĘDNE.ODSTĘPY: zwykłe i twarde spacje

Pokażę, jakie odstępy usuwa funkcja i jak zamienić twardą spację na zwykłą. Zachowasz oddzielone wyrazy i kontrolę nad źródłem.

Kajo RudzińskiOpublikowano Aktualizacja 3 min czytania

Mechaniczny grzebień wyrównuje odstępy między klockami

Dwie nazwy produktu wyglądają identycznie, a wyszukiwanie znajduje tylko jedną. Zanim zacznę przebudowywać formułę, sprawdzam odstępy. Spacja na końcu tekstu jest mało widowiskowym sposobem na popsucie raportu, ale za to bardzo skutecznym.

USUŃ.ZBĘDNE.ODSTĘPY, czyli angielskie TRIM, porządkuje zwykłe spacje. Nie jest uniwersalnym odkurzaczem wszystkich niewidocznych znaków. Pokażę, co usuwa, jak obsłużyć twardą spację i dlaczego czyszczenie warto zrobić w osobnej kolumnie.

Składnia i zwykłe spacje

=USUŃ.ZBĘDNE.ODSTĘPY(A2)

Funkcja usuwa zwykłe spacje z początku i końca tekstu, a wielokrotne spacje między wyrazami redukuje do jednej. Microsoft wskazuje znak ASCII 32, nie wszystkie znaki odstępu Unicode.

Na syntetycznych danych działanie wygląda tak. Cudzysłowy w tabeli tylko pokazują granice tekstu; nie wpisuj ich jako części zawartości komórki.

Tekst w A2 Wynik w B2
" Kawa ziarnista " "Kawa ziarnista"
"Herbata" "Herbata"
"A B" "A B"

Ostatni przykład jest również ostrzeżeniem. Jeśli dwa odstępy w kodzie produktu są celowe, funkcja zmieni jego znaczenie. Najpierw ustalam, czy odstępy są błędem, czy elementem identyfikatora.

W polskich formułach stosuję nazwy PL i średniki przy wielu argumentach. Angielska wersja używa TRIM; separator argumentów zależy od ustawień regionalnych. Przykłady dotyczą Excela z funkcjami ZNAK.UNICODE/UNICHAR, wymienionymi w dokumentacji dla Microsoft 365 i wydań 2016-2024.

Twardą spację zamieniam na zwykłą

Twarda spacja ma kod Unicode 160 i często przychodzi z tekstem kopiowanym ze stron. Samo USUŃ.ZBĘDNE.ODSTĘPY jej nie usuwa. Żeby pokazać problem bez niewidocznego znaku ukrytego w artykule, zbuduj syntetyczny tekst w A2:

="Kawa"&ZNAK.UNICODE(160)&"ziarnista"

W B2 wpisz:

=USUŃ.ZBĘDNE.ODSTĘPY(PODSTAW(A2;ZNAK.UNICODE(160);" "))

Najpierw PODSTAW zamienia twardą spację na zwykłą. Dopiero potem funkcja zewnętrzna porządkuje zwykłe odstępy. Wynik to Kawa ziarnista, z pojedynczą zwykłą spacją pomiędzy wyrazami.

Trzeci argument PODSTAW zawiera jeden odstęp: " ". Zastąpienie go pustym tekstem "" skleiłoby wyrazy w Kawaziarnista. To inna operacja i zwykle nie tego oczekujesz przy nazwie produktu.

ZNAK.UNICODE tworzy znak według kodu Unicode, a PODSTAW zastępuje wskazane fragmenty tekstu. Starszy zapis z CHAR ma polski odpowiednik ZNAK, nie CHAR. W tym przykładzie wybieram jawny kod Unicode, ponieważ ZNAK korzysta z zestawu znaków środowiska, co opisuje dokumentacja.

Szeroki element oddzielający grupy skrzyń jest zastępowany mniejszym odstępem

Tabulatory i koniec wiersza to osobna decyzja

Funkcja OCZYŚĆ usuwa pierwsze 32 niedrukowane znaki ASCII, lecz także ona nie obejmuje wszystkich niewidocznych znaków Unicode. Zakres działania wyjaśnia Microsoft.

Jeżeli koniec wiersza oddziela dwa słowa, jego usunięcie może je skleić. W takim przypadku najpierw zamieniam rozpoznany separator na zwykłą spację, dopiero później porządkuję odstępy. Nie dokładam OCZYŚĆ automatycznie do każdej formuły tylko dlatego, że nazwa brzmi obiecująco.

Gdy tekst nadal się nie dopasowuje, wracam do rozpoznania konkretnego znaku i źródła danych. Kolejne niewidoczne znaki mogą wymagać innych zamian. Jedna poprawna formuła dla kodu 160 nie jest gwarancją oczyszczenia całego importu.

Czyszczenie tekstu a konwersja liczb

USUŃ.ZBĘDNE.ODSTĘPY zwraca tekst. Nie traktuję jej jako narzędzia do konwersji kwot. Dla tekstu " 120 " mogę najpierw usunąć odstępy, a dopiero potem świadomie zamienić wynik na liczbę. Microsoft opisuje konwersję liczb zapisanych jako tekst.

Nie stosuję konstrukcji TEKST z pustym formatem jako sposobu „naprawy” liczby. Jeśli wejście jest już liczbą, nie potrzebuje usuwania tekstowych spacji. Przy identyfikatorze 00120 konwersja na liczbę mogłaby z kolei usunąć istotne zera wiodące.

Jak zachować kontrolę nad zmianą

Zostaw źródło w kolumnie A, a wynik formuły w B. Skopiuj ją w dół i porównaj przypadki: zwykły tekst, wiele spacji, twardą spację oraz kod, którego nie wolno zmienić. Dopiero po ocenie wyniku zdecyduj, czy zastąpić źródło wartościami.

Nie potrzebujesz makra nadpisującego zaznaczenie do tego małego zadania. Kolumna pomocnicza pozwala zobaczyć zmianę i zachować źródło do porównania. Przy powtarzalnych importach rozważ szerszy proces czyszczenia danych.

Na koniec sprawdź dopasowania w raporcie, np. w SUMA.WARUNKÓW. Oczyszczenie nazwy powinno pomóc odnaleźć właściwe rekordy, a nie połączyć różne produkty pod jednym przypadkowo skróconym kodem.

Najważniejsze w pigułce

Czy funkcja usuwa twarde spacje?

Sama nie usuwa znaku Unicode 160. Najpierw zamień go na zwykłą spację przez PODSTAW, a następnie uporządkuj odstępy.

Czy twardą spację zamieniać na pusty tekst?

W nazwach zwykle zamieniam ją na pojedynczą zwykłą spację, aby nie skleić wyrazów. Pusty tekst całkowicie usuwa separator.

Czy wynik jest liczbą?

Funkcja zwraca tekst. Ewentualna konwersja kwoty na liczbę jest osobnym krokiem; identyfikatory mogą wymagać zachowania tekstu.

Przy pracy nad artykułem użyto w zautomatyzowany sposób sztucznej inteligencji. Jeśli też chcesz tak umieć, sprawdź ten projekt.

Kajo Rudziński

Newsletter KajoData

Zostańmy w kontakcie.

Piszę o analizie danych, uczeniu się i zmianie pracy. Dzielę się tym, co pomaga mi ogarniać technologię i zawodowe decyzje. Jeśli lubisz ten sposób myślenia, zapraszam do mojego newslettera.