czwartek, 26 września 2013

Krzyczenie na Excela o poranku (problem z formatowaniem tekstowym komórek).

Excel zmienia formatowanie komórek wbrew mojej woli.

Zaznaczam zakres komórek, prawy klik format komórki zaznaczam, że ma być formatowanie tekstowe. Wklejam z tabelki z przeglądarki internetowej kody zapisane w postaci liczb z kropką, a ta cholera po chwili uzna je za liczby.... Krzyczę na ekran (aby rozładować emocje; aby nie bulwersować współpracowników, wyłączam struny głosowe). Szkoda, że Microsoft nie zbiera tego feedbacku, byłby on bardzo użyteczny.

Wyłączyłem wszelkie autokorekcje i sprawdzania błędów. Nic nie dało. Chcę, by był tekst, Excel zamienia to w liczbę. Odwiedziłem fora internetowe i długo nie znalazłem rozwiązania. W końcu z kilku rozwiązań skleciłem własne makro.

W pierwszej kolumnie ma pozostać kod w postaci liczb z kropką jako tekst, więc makro dodaje apostrof na początku zawartości. W trzeciej zaś chcę, by wartości liczbową z kropką (które excel traktuje jak tekst i nie chce przeliczać) zamieniły się w wartości liczbowe z przecinkiem. Odzyskałem kontrolę nad sobą i excelem. Drogi Microsofcie, dlaczego nie pozwolisz użytkownikom decydować, w jakim formacie ma pozostać zawartość komórki?

Sub Makro1()
'
' Makro1 Makro Klawisz skrótu: Ctrl+l

' Zamień wszystko w kolumnie A na text, nigdy nie pozwól by excel zmienił formatowanie z tekstu na liczbę.
' Przerwij, jeśli nic nie ma w komórce.

For Each v In Range("A4:A50"):
    If IsEmpty(v) Then Exit For
    v.Value = "'" & v.Value: Next

' Następnie zamień w kolumnie C wszystkie kropki na przecinki.
' Przerwij, jeli nic nie ma w komórce.

For Each v In Range("C4:C50"):
    If IsEmpty(v) Then Exit For
    v.Value = Replace(v.Value, ".", ","): Next
End Sub

Z góry dziękuję za wszelkie usprawnienia.

Brak komentarzy:

Prześlij komentarz