ASCII Wert durch Komma trennen

Bild

Betrifft: ASCII Wert durch Komma trennen
von: Basti
Geschrieben am: 02.07.2015 09:38:51

Hallo Herbers-Excel Forum,
Ich benötige dringend Eure Hilfe bei diesem Problem.


Akuell importiere ich in eine Excel-Mappe Daten aus einer Datei im ASCII-Format,um diese zu  _
verarbeiten.
Dabei handelt es sich um Text mit sieben Zeichen pro Zelle, der eigentlich eine negative/ _
positive Zahl mit sechs Nachkommastellen ist.
Bsp. 3.449.707 = 3,449707 oder -0.613566 = -0,613566
Excel interpretiert den Punkt lediglich bei Zahlen zwischen - 1 und + 1 als Trennzeichen. Wert > _
/< +/-= 1 interpretiert es als 1000000 Zahl. 
Meine Lösung: Über die Funktion "Suche & Ersetzen" alle Punkte durch ein Komma ersetzt. Damit  _
bekomme ich Zahlen zwischen - 1 und + 1 in den Griff. Zahlen >/< +/- = 1 anschließend mit Hilfe der Formel = LINKS(A1;1)&","&RECHTS(A1;6).
Könnt Ihr mit sagen, wie ich diesen Ablauf ggf. mit VBA automatisieren kann?
Gruß
Basti

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: Daniel
Geschrieben am: 02.07.2015 10:33:41
Hi
importiere die Datei über die Importfunktion (Daten - Externe Daten - Aus Text)
dort kannst du im Assistenten nicht nur das Trennzeichen vorgeben, sondern auch das verwendte Dezimalzeichen (diese Einstellung ist entwas versteckt im Schritt 3 des Assistenten unter "Weitere").
wenn du die Datei direkt öffnest ist es so, dass wenn du das in Excel von Hand machst, die deutschen Zahlenformate und Trennzeichen verwendet werden.
Lässt du die gleiche Aktion jedoch von einem Makro ausführen, werden die englischen verwendet.
Gruß Daniel

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: Daniel
Geschrieben am: 02.07.2015 10:34:48
Hi
importiere die Datei über die Importfunktion (Daten - Externe Daten - Aus Text)
dort kannst du im Assistenten nicht nur das Trennzeichen vorgeben, sondern auch das verwendte Dezimalzeichen (diese Einstellung ist entwas versteckt im Schritt 3 des Assistenten unter "Weitere").
wenn du die Datei direkt öffnest ist es so, dass wenn du das in Excel von Hand machst, die deutschen Zahlenformate und Trennzeichen verwendet werden.
Lässt du die gleiche Aktion jedoch von einem Makro ausführen, werden die englischen verwendet.
Gruß Daniel

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: Daniel
Geschrieben am: 02.07.2015 10:34:50
Hi
importiere die Datei über die Importfunktion (Daten - Externe Daten - Aus Text)
dort kannst du im Assistenten nicht nur das Trennzeichen vorgeben, sondern auch das verwendte Dezimalzeichen (diese Einstellung ist entwas versteckt im Schritt 3 des Assistenten unter "Weitere").
wenn du die Datei direkt öffnest ist es so, dass wenn du das in Excel von Hand machst, die deutschen Zahlenformate und Trennzeichen verwendet werden.
Lässt du die gleiche Aktion jedoch von einem Makro ausführen, werden die englischen verwendet.
Gruß Daniel

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: Daniel
Geschrieben am: 02.07.2015 10:35:00
Hi
importiere die Datei über die Importfunktion (Daten - Externe Daten - Aus Text)
dort kannst du im Assistenten nicht nur das Trennzeichen vorgeben, sondern auch das verwendte Dezimalzeichen (diese Einstellung ist entwas versteckt im Schritt 3 des Assistenten unter "Weitere").
wenn du die Datei direkt öffnest ist es so, dass wenn du das in Excel von Hand machst, die deutschen Zahlenformate und Trennzeichen verwendet werden.
Lässt du die gleiche Aktion jedoch von einem Makro ausführen, werden die englischen verwendet.
Gruß Daniel

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: Daniel
Geschrieben am: 02.07.2015 10:35:22
Hi
importiere die Datei über die Importfunktion (Daten - Externe Daten - Aus Text)
dort kannst du im Assistenten nicht nur das Trennzeichen vorgeben, sondern auch das verwendte Dezimalzeichen (diese Einstellung ist entwas versteckt im Schritt 3 des Assistenten unter "Weitere").
wenn du die Datei direkt öffnest ist es so, dass wenn du das in Excel von Hand machst, die deutschen Zahlenformate und Trennzeichen verwendet werden.
Lässt du die gleiche Aktion jedoch von einem Makro ausführen, werden die englischen verwendet.
Gruß Daniel

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: UweD
Geschrieben am: 02.07.2015 10:45:31
Hallo
Wenn ich so eine Datei importiere, dann steht das so in den Zellen.
Userbild
Wobei die Werte mit 2 Punkten als Zahl interpretiert werden. Und nur bei der entsprechenden Formatierung angezeigt werden.
Wenn nur ein . enthalten ist, wird als Text interpretiert.
Hiermit werden diese restlichen Punkte durch Komma ersetzt. (kannst du aber auch von Hand ausführen)

Sub KommaPunkt()
    Dim Spalte As Integer
    Spalte = 1 'Deine Werte stehen in Spalte A
    
    With ActiveSheet.Columns(Spalte)
        .SpecialCells(xlCellTypeConstants, 2).Replace What:=".", _
            Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        .TextToColumns DataType:=xlFixedWidth, _
            FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
    End With
        
End Sub
Gruß Uwe

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: Daniel
Geschrieben am: 02.07.2015 10:52:24
Hi
du musst schon beim Öffnen der Datei ansetzen.
wie öffnest du die Datei?
wie liegen die Daten in der ausgangsdatei vor?
bedenke auch beim Ersetzen:
wenn du in einem als Text gespeicherte Zahl einen Dezimal-Punkt hast und dann diese Zahl wandeln willst indem du den Dezimalpunkt durch ein Komma ersetzt, dann musst du, wenn du das per VBA machst, den Punkt durch einen Punkt ersetzen.
Kling wiedersinnig, ist aber so.
Das Problem ist, dass Excel und VBA englisch miteinader reden.
Ein Ersetzen ist wie eine Neueingabe von Hand, bei der Excel erneut prüft, ob die Eingabe eine Zahl, ein Datum, eine Formel oder ein Text ist.
Wenn jedoch diese Eingabe von VBA kommt, dann erwartet Excel die Zahlen im englischen Zahlenformat, dh mit dem Punkt als Dezimalzeichen.
Kommt die Eingabe jedoch von dir, dann erwartet Excel die Zahl im eingestellen Läderformat, dh in Deutschland mit dem Komma als Dezimalzeichen.
Das ist ein bisschen verwirrend, daher sollte man schon beim öffnen der Datei dafür sorgen, dass die Daten richtig interpretiert werden.
Gruß Daniel

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: UweD
Geschrieben am: 02.07.2015 11:17:22
Hallo
Diese Datei wird geöffnet. (Aufbau so, wie beschrieben)


3.449.707
-0.613566
1.444.324
3.449.707
0.613566
1.444.324

https://www.herber.de/bbs/user/98595.txt
Sub KommaPunkt()
    Dim Datei As String
    
    Datei = "C:\Temp\Test.txt"
        
    Workbooks.OpenText FileName:=Datei, Origin:=xlMSDOS, StartRow _
        :=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
        TrailingMinusNumbers:=True
    With ActiveSheet.Columns(1)
        .SpecialCells(xlCellTypeConstants, 2).Replace What:=".", _
            Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        .TextToColumns DataType:=xlFixedWidth, _
            FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
        .NumberFormat = "General"
    End With
        
End Sub

Bei mit klappt das ...
Gruß UweD

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: Daniel
Geschrieben am: 02.07.2015 12:04:59
HI
sieht unsinnig aus.
der Punkt wird ja gleichzeitig als Dezimal- und Tausendertrennzeichen verwendet.
wenn das vorliegt, sollte man erstmal beim Erstellen der Ausgangsdatei ansetzen und hier für ein korrektes Ausgabeformat sorgen.
Gruß Daniel

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: UweD
Geschrieben am: 02.07.2015 13:07:31
Hallo Daniel
>>> sieht unsinnig aus.

.SpecialCells(xlCellTypeConstants, 2)
1) Dadurch werden nur die Zellen angesprochen, die Text sind.
2) Die Punkte bei Zahlen sind nur Optisch und in der Zelle nicht vorhanden
>>> sollte man erstmal beim Erstellen der Ausgangsdatei ansetzen
und was ist, wenn das Maschinen Messwerte sind, die genau so automatisch abgelegt werden???
Klappt auf jeden Fall bestens.
Gruß UweD

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: Daniel
Geschrieben am: 02.07.2015 13:49:48
Hi
du hast ne Text-Datei hochgeladen, und da gibts keine "nur optischen Punkte", die gibts nur in Excel.
Wenn in der Textdatei Punkte zu sehen sind, sind auch Punkte da.
Wenn die Maschinensoftware die Daten so ausspuckt, hat die Maschninensoftare nen Fehler und sollte korrigiert werden.
Gruß Daniel

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: UweD
Geschrieben am: 02.07.2015 13:59:05
Hi
- also ich bin nicht der Fragensteller.
- Ich habe so gut ich kann auf die Problemstellung geantwortet
- und laut Rückmeldung hat es ja auch geklappt.
- Ja, in der Textdatei sind nur "reale Punkte"
- Aber viele Sachen macht Excel von sich auch schon automatisch, ( z.B. 1000er Punkte erkennen und in der Zelle weglassen), das muss also im Makro NICHT mehr berücksichtigt werden.
- Ja, du hast Recht: Solche gemischten Messwerte sollte eine Anlage nie ablegen.
Gruß UweD

Bild

Betrifft: AW: ASCII Wert durch Komma trennen
von: Basti
Geschrieben am: 02.07.2015 11:23:30
Hat funktioniert!
Danke und Gruß
Basti

 Bild

Beiträge aus den Excel-Beispielen zum Thema "ASCII Wert durch Komma trennen"