Mam dane z innego pliku. Nie mogę ich zsumować przez dziwne odstępy miedzy znakami. Nie są to znaki spacji. W jaki sposób je usunąć?
Załączniki
- Zeszyt_2.xlsx ( 10K )
Mam dane z innego pliku. Nie mogę ich zsumować przez dziwne odstępy miedzy znakami. Nie są to znaki spacji. W jaki sposób je usunąć?
Załączniki
Ciekawy przykład :-) Interesuje mnie, jak taka tabela powstała :-)
Te dziwne znaki są znakami twardej spacji, inaczej nazywanej spacją nierozdzielającą. Kod znaku: 160. Zwykła spacja ma kod znaku 32. Prawdopodobnie jest to efekt niewłaściwie wykonanego pliku tekstowego, który następnie został zaimportowany do Excela. Względnie efekt kopiowania danych z internetu lub z MS Word. W każdym razie dla Excela jest to tekst, który nie powinien brać udziału w obliczeniach.
Ponieważ podejrzewam, że to MS Word jest winowajcą, więc wykorzystam ten program do szybkiego usunięcia tego typu niepotrzebnych znaków. Oczywiście można by wykorzystać narzędzia i funkcje tekstowe Excela, ale wydaje mi się, że w tym przypadku Word będzie ciekawszym narzędziem. :-)
Trzeba skopiować dane z Excela i wkleić je do czystego dokumentu Worda. Warto w Wordzie włączyć wyświetlanie znaków niedrukowanych (skrót Ctrl+Shift+8 z klawiatury literowej) - wtedy zobaczymy, że między cyframi w tabeli znajdują się znaki twardej spacji. Następnie trzeba użyć polecenia Znajdź i Zastąp (skrót klawiszowy Ctrl*H)
W okienku przyciskiem Więcej rozwijamy dolną część okna dialogowego i widzimy przycisk Specjalne, po kliknięciu którego można wybrać spację nierozdzielającą, czyli twardą spację. Symbolem, który w Wordzie jest podstawiany za spację nierozdzielającą jest ^s - i taki symbol powinien się znaleźć w polu Znajdź.
Pole Zamień można zostawić puste. Wciskamy przycisk Zamień wszystko. Word znajdzie wszystkie znaki twardej spacji i je usunie.
Tak przerobioną tabelę można z Worda skopiować, wkleić do Excela - a w Excelu już formatować i obliczać dane jako normalne liczby.
Pozdrawiam
Andrzej
Innym rozwiązaniem będzie użycie VBA.
Proszę zastosować następujący kod:
Sub ascii() For Each xcell In Selection If IsNumeric(xcell) = True And xcell <> "" Then xcell.Value = CDec(xcell.Value) xcell.numberformat="0.00" End If Next xcell End Sub
Załączniki
A może po prostu funkcja PODSTAW(), gdzie wystarczy skopiować ten znak do wyszukania i zastąpić pustym tekstem. Jeżeli wartość ma być traktowana jako liczbowa to jeszcze ew. funkcja WARTOŚĆ() (lub przemnożenie przez 1 czy dodanie 0)
Pozdrawiam
Tomasz Grabowski
To w takim razie w odpowiedzi na komentarz dokładam jeszcze plik z przykładem.
W tym wypadku, aby zamienić te odstępy należy skopiować jeden z nich i wstawić go jako argument funkcji.
=WARTOŚĆ(PODSTAW(B2;" ";"")) - gdzie drugi argument to skopiowany odstęp a trzeci argument to pusty tekst.
Dodatkowo zastosowałem funkcję WARTOŚĆ(), aby przekonwertować wynik do postaci liczby (można zamiast tej funkcji zastosować "*1" lub "+0" )
Przykład w załączniku
Pozdrawiam
Tomasz Grabowski
Załączniki