Anzeige
Archiv - Navigation
272to276
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
272to276
272to276
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

csv-Dateien lesen/umkopieren

csv-Dateien lesen/umkopieren
26.06.2003 16:51:23
Gundolf
Hallo Zzusammen

Ich muss 2 csv-Dateien zusammenführen. Dafür benötige ich die letzten 180 Zeilen der Datei 1 und dann die komplette Datei 2. Dies wollte ich dadurch bewerkstelligen, dass ich zunächst alle Datensätze der Datei 1 zähle und in einem weiteren Durchlauf dann anfange zu schreiben, wenn mein Zähler grösser als 180 Zeilen vor dem Dateiende ist.
Dafür habe ich verschiedene Sachen durchprobiert:
Input liesst mir sofort die ganze Datei, zählen war nicht möglich
Get ging nur mit OPEN FOR RANDOM und damit kam ich auch nicht durch
Hat jemand eine Idee, wie man dass einfach machen kann?
(Struktur der Datensätze: Datum (TT.MM.JJJJ hh:mm:ss), Messwert(single), Flag1(int), Flag2(int)
Besten Dank für Eure Hilfe
Gundolf

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: csv-Dateien lesen/umkopieren
26.06.2003 17:15:18
Lothar

Hallo Gundolf,

importiere beide CSV vollständig in je ein Tabellenblatt.

Mit dem untenstehenden Makro ermittelts Du die Anzahl der Datensätze je Blatt. Danach kannst Du die Zeilen "Gesamt - 180" - also Zeile 2 bis Zeile nnn - des betreffenden Blattes löschen.
Die Blätter dann zu mergen solte nicht das Problem sein, da Du ja die betreffende Position zum Einfügen im 2 Blatt dann kennst.


Lothar

__________________

Sub CountRows()

Dim intRow, AnzRows As Long
Dim sMsg As String

'*** Zählung der Datensätze
'*************************************
'*** Die ERSTE Zeile ist die Kopfzeile !!
'*************************************
If IsEmpty(Range("A2")) Then Exit Sub
intRow = 2
Do Until IsEmpty(Cells(intRow, 1))
intRow = intRow + 1
Loop
AnzRows = intRow - 2
MsgBox AnzRows & " Datensätze gezählt"
End Sub

Anzeige
Re: csv-Dateien lesen/umkopieren
26.06.2003 17:29:02
Gundolf

Die Dateien sind zu lang um in eine Tabelle kopiert zu werden
Ich müsste auf Teilb ereich der Dateien zugreifen können, d.h. ich muss auch Zeile (Datensatzinhalt) interpretieren können, um zu sehen, ob mich diese Zeile interessiert oder nicht

Gruss
Gundolf

Re: csv-Dateien lesen/umkopieren
26.06.2003 17:53:15
Lothar

Hmm, das hast Du aber nicht erwähnt ... aber ok.

Hast Du schon die Line-Input Variante versucht?
In der Hilfe habe ich dieses Beispiel entdeckt:

Line Input #-Anweisung (Beispiel)
In diesem Beispiel wird die Line Input #-Anweisung verwendet, um eine Zeile aus einer sequentiellen Datei zu lesen und einer Variablen zuzuweisen. In diesem Beispiel wird angenommen, daß DATEI1 eine Textdatei ist, die einige Zeilen mit Beispieldaten enthält.

Dim Textzeile
Open "DATEI1" For Input As #1 ' Datei öffnen.
Do While Not EOF(1) ' Schleife bis Dateiende.
Line Input #1, Textzeile ' Zeile in Variable einlesen.
Debug.Print Textzeile ' Ausgabe im Direktfenster.
Loop
Close #1 ' Datei schließen

Anzeige
Re: csv-Dateien lesen/umkopieren
26.06.2003 18:23:42
Gundolf

Geht nicht so richtig, es wird nicht 1 Textzeile eingelesen, sondern die ganze Datei. Ist also keine Hilfe. Mit Open vor RANDOM komme ich auch nicht klar. Es muss die Datensatzlänge angegebne werden. Code funktioniert nicht

Gruss Gundolf


Type Datensatz ' Datentyp definieren.
DatumZeit As String
Messwert As Single
Qualität As Integer
Tarif As Integer
End Type

Dim DSatz As Datensatz ' Variable deklarieren.


Open "DATEI" For Random As #1 Len = Len(DSatz)
Position = 5
Do While Not EOF(1)
Get #1, Position, DSatz
Position = Position + 1
Debug.Print DSatz.DatumZeit
Debug.Print DSatz.Messwert
Debug.Print DSatz.Qualität
Debug.Print DSatz.Tarif
Loop
AnzZeilen1 = Position
Close #1

Anzeige
Re: csv-Dateien lesen/umkopieren
26.06.2003 18:30:34
andre

hallo gundolf,
statt dem debug kannst diu einen zähler einbauen und die zeilen zählen. dann bekommst du den part mit den letzten 180 hin. über den inhalt von textzeile kannst du die prüfung auf relevanz für deine zwecke durchführen.
gruss andre

184 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige