Wpis z mikrobloga

#excel
dlaczego to makro:

Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart,

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False,

ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2


zamiast zmienić mi kropki na przecinki, kasuje je całkowicie i powstają mi ogromniaste liczby?

1086.78394 -> 108 678 394
1109.87754 -> 110 987 754
31710.09842 -> 3 171 009 842
3972.28637 -> 397 228 637
4103.50964 -> 410 350 964
4054.6821 -> 40 546 821
5351.61697 -> 535 161 697
5695.91358 -> 569 591 358
379959.06541 -> 37 995 906 541
148779.53349 -> 14 877 953 349
4828.89277 -> 482 889 277
1716.28419 -> 171 628 419
1083.21216 -> 108 321 216
42181.40301 -> 4 218 140 301
6313.94188 -> 631 394 188
18804.55471 -> 1 880 455 471
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Limonene: Najprostsze obejście to użycie TextToColumns z DecimalSeparator ustawionym na kropkę. Tylko, że to zadziała tylko jak Selection to jedna kolumna, w innym wypadku trzeba zrobić pętlę dla każdej kolumny z osobna.
  • Odpowiedz
@Limonene: Coś dziwnego jest z tym makrem. Sprawdziłem najpierw dla 10.00 i zadziałało (zamieniło kropkę na przecinek). Już chciałem pisać "u mnie działa", ale zrobiłem jeszcze kilka testów i nie zawsze działało.
Zauważyłem, że to makro działa tylko jeśli po kropce są maksymalnie dwie cyfry. Co prawda liczba jest wtedy przechowywana jako tekst, ale to już chyba mniejszy problem.
  • Odpowiedz
Zauważyłem, że to makro działa tylko jeśli po kropce są maksymalnie dwie cyfry.


@Pan_Cerny: ah, to pewnie dlatego pamiętam, że kiedyś mi działało. Ogólnie to jest cześć większej całości, więc po prostu wywaliłam ten fragment, reszta makra działa i na końcu sobie zamieniam ręcznie
  • Odpowiedz
@Limonene:
z tego co pamiętam, to mierzyłem sie z tym problemem i pamiętam, że używałem pętli w połączeniu z funkcją replace dla wartości komórki, zamiast metody Replace dla obiektu Range, i po tym wszystkim zmieniałem format na liczbowy, wyglądało to mniej więcej tak:

Dim c As Range
For Each c In Selection.Cells
c.NumberFormat
  • Odpowiedz