Thema Datum  Von Nutzer Rating
Antwort
Rot Fehlinterpretation Zahlformat beim Importieren
10.08.2016 15:30:25 Anja
Solved
10.08.2016 16:09:21 Gast25062
Solved
11.08.2016 09:44:59 Gast27074
NotSolved
11.08.2016 10:55:38 Gast22993
NotSolved

Ansicht des Beitrags:
Von:
Anja
Datum:
10.08.2016 15:30:25
Views:
1160
Rating: Antwort:
 Nein
Thema:
Fehlinterpretation Zahlformat beim Importieren

Hallo zusammen,

ich habe eine Csv-Datei mit dem Aufbau

 

Property    Element    Nominal    Actual    Dev
DLM     P 1    10,138    10,076    -0,062
DLM     P 2    10,103    9,853    -0,249
DLM     P 3    10,075    9,908    -0,167
DLM     P 4    10,005    9,847    -0,158
DLM     P 5    9,919    9,914    -0,005
X     P 1    58,950    58,950    -0,000
X     P 2    72,830    72,830    -0,000
X     P 3    92,828    92,828    -0,000
X     P 4    112,827    112,827    -0,000
X     P 5    132,825    132,824    -0,000

Diese Datei öffne ich und lese die Daten in ein Array, wobei jede Zeile mit Split in die einzelnen Spalten aufgetrennt wird. Das Ergebnis möchte ich anschließend per Schleife in einem Tabellenblatt speichern.

 

Sub DataImport()
'Array importieren
Dim iDatNum As Integer, Zeile As String, X As Integer
Dim AnzZeile As Integer, AnzSpalte As Integer, i As Integer, j As Integer

ReDim strLetters(1 To 1)
iDatNum = FreeFile
Open txtFileName For Input As iDatNum
'Open "C:\Users\VWMXPDY\Desktop\DLM-Export_2.csv" For Input As iDatNum

Do While Not EOF(iDatNum)
    X = X + 1
    Line Input #iDatNum, Zeile
    ReDim Preserve strLetters(1 To X)
    strLetters(X) = Split(Zeile, vbTab) 'vbTab

Loop
Close iDatNum
MsgBox strLetters(2)(0) ' Zeile 2 Spalte 1

''Zeilen und Spalten der eingelesenen Daten
AnzZeile = (UBound(strLetters(), 1)) 'Anzahl Zeilen
AnzSpalte = UBound(strLetters(X)) 'Anzahl Spalten

'Daten in Hilfs-Tabellenblatt schreiben
For i = 1 To AnzZeile

    For j = 0 To AnzSpalte
   
        'MsgBox strLetters(i)(j)                                                            'funktioniert
        Sheets("Help").Range("A" & j + 1). = strLetters(i)(j)
        'Sheets("Help").Range(Cells(i, j + 1)).Value = strLetters(i)(j)                     'funktioniert nicht
        'Sheets("Help").Range(Cells(i, j + 1)) = strLetters(i)(j)                           'funktioniert nicht
        'Sheets("Help").Cells(i, j + 1).PasteSpecial xlValues = strLetters(i)(j)            'funktioniert, aktiviert beim Kopieren aber das Tabellenblatt
        'Sheets("Help").Range(Sheets("Help").Cells(i, j + 1)).Value = strLetters(i)(j)       'funktioniert nicht
    
    Next j

Next i

End Sub

 

Lasse ich die Komponenten per Massagebox anzeigen (siehe etzte for-Schleife), werden alle Zahlen mit dem Komma an der richtigen Stelle ausgegeben. Schreibe ich die Daten dann in die Tabelle, wird das Komma plötzlich als Punkt interpretiert und aus 10,138 wird 10138,0000. Die einzige Möglichkeit die Werte korrekt zu importieren, habe ich über Pastespecial gefunden, wobei hier das Tabellenblatt aktiviert wird, bzw. die aktive Zelle immer mit markiert wird. Hat jemand also eine Idee, wie ich die Daten korrekt und im Hintergrund in mein Tabellenblatt schreiben kann?

 

Danke für eure Hilfe.

 

Grüße,

Anja


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Fehlinterpretation Zahlformat beim Importieren
10.08.2016 15:30:25 Anja
Solved
10.08.2016 16:09:21 Gast25062
Solved
11.08.2016 09:44:59 Gast27074
NotSolved
11.08.2016 10:55:38 Gast22993
NotSolved