Punkt durch Komma erstetzen OHNE Replace

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Punkt durch Komma erstetzen OHNE Replace
von: Hannes Respondek
Geschrieben am: 06.10.2015 10:19:04

Hallo Zusammen, hoffe ihr könnt mir helfen :S
ich habe folgendes Problem:
Ich muss ein . durch ein , ersetzen. Das funktioniert auf den Desktop PC super schnell mit Hilfe der Replace Funktion.
Auf den Server (wo das Makro später laufen soll) dauert dies aber ca. 5 Minuten.
Gibt es eine andere Möglichkeit ein Punkt durch ein Komma zu ersetzen ohne die Replace Funktion zu verwenden?

Bild

Betrifft: AW: Punkt durch Komma erstetzen OHNE Replace
von: Daniel
Geschrieben am: 06.10.2015 10:55:26
Hi
kommt darauf an, was du machen willst.
Englische Zahlen mit Punkt als Dezimalzeichen in deutsche Zahlen, welche Excel erkennt, wandeln?
Wenn ja und nur wenige Spalten betroffen sind, könnte man die Umwandlung auch mit Text in Spalten machen.
Ansonsten ist die Excel-Menüfunktion Ersetzen (Replace) schon das schnellste was ich kenne.
Beachte, dass VBA und Excel englisch miteinander reden, dh. wenn du englische in deutsche Zahlen wandeln willst, musst du in VBA den Punkt durch einen Punkt ersetzen.
Gruß Daniel

Bild

Betrifft: nicht ganz richtig bei Textzahlen
von: Tino
Geschrieben am: 06.10.2015 11:14:48
Hallo,
das stimmt nicht so ganz,
es kommt auf die Ländereinstellung an wie bei einer Textzahl das Komma verwendet wird.
Beispiel

Sub Bsp()
Dim sZahl$, PunktOrKomma$
sZahl = "0.5"
MsgBox sZahl * 2
sZahl = "0,5"
MsgBox sZahl * 2
PunktOrKomma = IIf("0.5" * 2 = 1, ".", ",")
sZahl = "0.5"
MsgBox Replace(sZahl, ".", PunktOrKomma) * 2
sZahl = "0,5"
MsgBox Replace(sZahl, ".", PunktOrKomma) * 2
End Sub
Gruß Tino

Bild

Betrifft: AW: nicht ganz richtig bei Textzahlen
von: Daniel
Geschrieben am: 06.10.2015 11:23:57
Hi Tino
ich ging eigentlich von Range().Replace aus.
Gruß Daniel

Bild

Betrifft: ach so, ich von Text. oT.
von: Tino
Geschrieben am: 06.10.2015 11:59:54


Bild

Betrifft: AW: Punkt durch Komma erstetzen OHNE Replace
von: Hannes Respondek
Geschrieben am: 06.10.2015 12:26:20
Erstmal danke für eure Hilfe!!
Ich glaube ich muss mein Beispiel konkreter machen :S
Ich habe folgenden Daten als TEXT vorliegen:
A | B | C | D | E | F
0 |8.68 |29.6 |300 | 1001.89|569.97094
.
.
.
Insgesamt sind es ca. 8000 Zeilen.
Ich brauche die in Werte als ZAHL mit zwei Dezimalstellen und nicht als TEXT.

Bild

Betrifft: AW: Punkt durch Komma erstetzen OHNE Replace
von: Daniel
Geschrieben am: 06.10.2015 12:40:21
Hi
wenns reicht, dass die 2 NK-Stellen angezeigt werden und die Werte aber original erhalten bleiben dann:

With Range("A:F")
    .Replace ".", ".", Lookat:=part
    .Numberformat = "0.00"
end with
oder ohne Replace, auch hier mit Beibehaltung der originalwerte:
Dim C As Range
For Each C In Range("A:F").Columns
    C.TextToColumns _
            Destination:=C(1), _
            DataType:=xlFixedWidth, _
            FieldInfo:=Array(0, 1), _
            DecimalSeparator:=".", _
            ThousandsSeparator:=","
Next
Range("A:F").NumberFormat = "0.00"
wenn die Zahlen auch hart gerundet werden sollen (nicht nur angezeigt),dann so:
Dim arr
Dim z As Long, s As Long
Dim x
With ActiveSheet.UsedRange.Resize(, 6)
    arr = .Value
    For z = 1 To UBound(arr, 1)
        For s = 1 To UBound(arr, 2)
            x = Val(arr(z, s))
            If x <> 0 Then arr(z, s) = WorksheetFunction.Round(x, 2)
        Next s
    Next z
    .Value = arr
End With
Gruß Daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Kommentarfelder gelb markieren"