konto usunięte

Temat: Makro usuwające separator w postaci kropki.

Witam,

potrzebuję waszej pomocy odnośnie błahostki w excelu z, którą w vba nie mogę sobie poradzić (niestety nie jestem biegły w programowaniu tym językiem). Konkretnie potrzebuję makra, które w danych liczbowych wywali mi separator w postaci kropki. Gdy próbuję nagrać makro z użyciem ctrl+H to wychodzą dziwne rzeczy, owszem wywala kropki ale zamienia również wartości po przecinkach takie jak np 0,0056 w 56000. Potrzebuję kodu vba, który wywali mi tylko i wyłącznie separator w postaci kropki z wartości tysięcznych, dziesięciotysięcznych itd... Kod ten będzie częścią większego makra przetwarzającego dane. Wywalanie kropek dotyczy jednej kolumny, tak jak na screenie poniżej (konkretnie kolumna E). Szukałem już w necie pomocy ale to co znalazłem nie chciało działać. Mam nadzieje, że tutaj ktoś mi pomoże. Pozdrawiam.

Obrazek

konto usunięte

Temat: Makro usuwające separator w postaci kropki.

Witam,
proszę zaznaczyć odpowiedni obszar i spróbować odpalić makro:

Sub zamianakropek()
Dim kom As Range

For Each kom In Selection
kom.Value = Replace(kom.Value, ",", "c")
kom.Value = Replace(kom.Value, ".", "")
kom.Value = Replace(kom.Value, "c", ",") * 1
Next kom
End Sub

Pozdrawiam.
Jakub Mieszczak

Jakub Mieszczak Samodzielny
Specjalista ds.
Kontroli Przepływu
Towaru, Ka...

Temat: Makro usuwające separator w postaci kropki.

Darek J.:
Witam,
proszę zaznaczyć odpowiedni obszar i spróbować odpalić makro:

Sub zamianakropek()
Dim kom As Range

For Each kom In Selection
kom.Value = Replace(kom.Value, ",", "c")
kom.Value = Replace(kom.Value, ".", "")
kom.Value = Replace(kom.Value, "c", ",") * 1
Next kom
End Sub

Pozdrawiam.

Dobry sposób ale problem jest jeśli wartość wyeksportowana będzie wyglądała np. 1.300 a nie 1.300,00 wtedy powyższy kod wprowadzi przekłamanie. Zmieniłem trochę powyższy na podobny z użyciem funkcji Join i Split.


Sub zamianakropek_v2()
Dim kom As Range

For Each kom In Selection

Data = Split(kom.Value, ".") 'podziel dane - spearatorem jest "."
Data = Join(Data, "") * 1 'połącz podzielnone dane bez użycia separatora i pomnóż przez 1 aby uzyskać typ liczbowy
kom.Value = Data 'wypełnij komórkę scalonymi danymi
Next kom

End Sub



Orginal Zmiana Replace Zmiana Split/Join
1.300,0 1300 1300
1300 1300 1300
1.300 1,3 1300
1.300,0 1300 1300
65.650.655 65650655 65650655

konto usunięte

Temat: Makro usuwające separator w postaci kropki.

Dzięki panowie i jedno i drugie makro robi robotę po za jednym wyjątkiem, przy mnożeniu wartości z komórki przez jeden wywala run time error 13. Usunąłem operacje przemnożenia wartości bo format liczbowy nie jest konieczny.

Jutro sprawdzę czy makro działa prawidłowo w docelowym skoroszycie z innymi makrami i dam znać ale wstępnie dziękuję za pomoc :)



Wyślij zaproszenie do