Microsoft Excel

Herbers Excel/VBA-Archiv

String(Zahlen) in Spalten aufteilen


Betrifft: String(Zahlen) in Spalten aufteilen von: Piotrek Kraut
Geschrieben am: 30.09.2019 22:44:56

Hallo,

ich komme nicht weiter und bitte um Eure Hilfe.

Ich habe einen String der wie folgt aussieht:
46,72,650,-0,698,0,921,1,155,127,162

Die Zahlen sollen nun in Spalten aufteilt werden.
46 72,65 -0,698 0,921 1,155 127,172

Wie lässt sich so etwas am besten lösen?
Wie müsste der VBA-code dazu aussehen?

Für Eure Hilfe bedanke ich mich im voraus ,
Peter

  

Betrifft: AW: String(Zahlen) in Spalten aufteilen von: Sigi
Geschrieben am: 30.09.2019 22:59:42

Hallo Peter,

woran kann man erkennen wo getrennt werden soll?
Ohne klares Trennzeichen wird's schwierig.

Gruß
Sigi


  

Betrifft: AW: String(Zahlen) in Spalten aufteilen von: Daniel
Geschrieben am: 30.09.2019 23:01:25

HI
normalerweise macht man das in dem man den String in die erste Spalte schreibt und dann mit Daten - Datentools - Text in die Spalten verteilt, aber das Problem hier ist, dass du als Trenn- und Dezimalzeichen jedesmal das Komma verwendest.

kannst du mal eine allgemeine Regel formulieren, aus der man ableiten kann, ob "46,72,650" jetzt für "42 720 650" steht, oder für "42,72 650" oder für "42 72,65"

Gruß Daniel


  

Betrifft: AW: String(Zahlen) in Spalten aufteilen von: Piotrek Kraut
Geschrieben am: 30.09.2019 23:14:53

Hallo Daniel,

ich erhalte die Zahlen als CSV-File als Export-Daten aus einer Software. Ich frage mich, was der Software-Entwickler sich dabei gedacht hat die Daten so zu exportieren.

Das Interessante ist, dass jede 3-te Komma als Trennzeichenzeichen angesehen werden kann und jedes 2-te Komma als Dezimalzeichen dient.

Vielleicht kann man die Systematik irgendwie nutzen?

LG, Peter


  

Betrifft: AW: String(Zahlen) in Spalten aufteilen von: Piotrek Kraut
Geschrieben am: 30.09.2019 23:31:28

Hallo Daniel,

Komma 1: Trennzeichen
Komma 2: Dezimalkomma
Komma 3: Trennzeichen
usw.

Hilft das?

LG, Peter


  

Betrifft: AW: String(Zahlen) in Spalten aufteilen von: Daniel
Geschrieben am: 30.09.2019 23:44:51

kann man ausnutzen, aber was ist dann das erste Komma, oder das sechste?
wenn das Komma das Trennzeichen ist, müsste konsequenterweise der Punkt als Dezimalzeichen verwendet werden.
Oder die Zahlen müssten als Text in Anführungszeichen geschrieben werden, damit man erkennen kann, ob ein Komma ein Trennzeichen ist oder zum Wert gehört.

für dich wäre der Workaround, dass du mit einer Schleife durch den Text gehst, die Kommas zählst, an der Anzahl ermittelst ob es ein Dezimal- oder ein Trennzeichen ist, bei einem Trennzeichen das Komma durch ein anderes Trennzeichen ersetzt und dann mit dem so überarbeiteten Text weiter arbeitest.

also mal als beispiel für deine Beschreibung (jedes dritte Komma ein Trennzeichen):

txt = "....."
for i = 1 to len(txt)
    if mid(txt, i, 1) = "," then
        z = z + 1
        if z mod 3 = 0 then mid(txt, i, 1) = ";"
    end if
next

Range("A1").Value = txt
Columns(1).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), DecimalSeparator:="," _
        , ThousandsSeparator:=".", TrailingMinusNumbers:=True
Gruß Daniel


  

Betrifft: AW: String(Zahlen) in Spalten aufteilen von: Piotrek Kraut
Geschrieben am: 01.10.2019 00:27:23

Hallo Daniel,

danke für deine Antwort.
Werde morgen es testen

LG, Peter


Beiträge aus dem Excel-Forum zum Thema "String(Zahlen) in Spalten aufteilen"