sims
Goto Top

Excel: Bestimmte Infos aus mehreren csv Dateien auslesen und in einer Excel Datei zusammenführen

Hallo Leute,
ich bräuchte mal wieder eure hilfe in Sachen EXCEL - ich hoffe ihr könnt mir weiterhelfen, das wäre eine feine SACHE!

Und zwar habe ich von einer Messstelle ca. 265 csv Dateien wobei jede Datei einem Tag entspricht.
In jeder einzelnen Datei wurden in einem Zeitintervall Werte (Date, Time, Durchfluss1, Durchfluss2, lt101 cm, lt102 cm und tt101 C) erfasst.

Date = Datum
Time = Zeitintervall der Messung
Durchfluss1 = l/s
Durchfluss2 = l/s
lt101 cm = Höhe1
lt102 cm = Höhe2
tt101 C = Temperatur

Ich würde jetzt gerne aus allen von diesen 259 Excel- Dateien den höchsten Wert vom Durchfluss1 und Durchfluss 2 herausfiltern und die dazugehörigen Werte von „lt101 cm“ „lt102 cm“ und „tt101 C“(es gibt auch Tage wo es keinen Durchfluss gibt); und in eine eigene Excel Datei spielen.
Damit man eine bessere Übersicht über die ganzen gesammelten Wert erhält.

Die neue Excel Datei sollte dann das jeweilige Datum und den jeweiligen höchsten Wert Durchfluss 1 und 2 (sofern vorhanden) inkl. der Daten „lt101 cm“ „lt102 cm“ und „tt101 C“ zum passenden höchsten Durchfluss Ergebnis haben.

Ich hoffe es kann mir da wer weiterhelfen. Besten DANK für eure HILFE und ZEIT!

Hier der LINK wo ich ein paar Excel Files zum downloaden zusammengestellt habe: http://we.tl/VEAjTs0nrE


DANKE

lg
sims

Content-Key: 252667

Url: https://administrator.de/contentid/252667

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: sims
sims 22.10.2014 aktualisiert um 08:25:28 Uhr
Goto Top
Hallo Leute,
ich habe es jetzt selber mittels Code geschafft die einzelnen ca. 260 csv Dateien in einer *.xls Datei zusammenzufassen.

Code zum zum zusammen spielen der einzelnen Dateien:
Sub CSV_Import()
Dim vntaDateien As Variant
Dim lngI As Long
Dim lngLetzteZeile As Long
Dim wbkCSV As Workbook
Dim wksZiel As Worksheet
lngLetzteZeile = 1
vntaDateien = Application.GetOpenFilename _
    ("csv-Dateien (*.csv), *.csv", MultiSelect:=True)  
If IsArray(vntaDateien) Then
 Set wksZiel = ThisWorkbook.Sheets(1)
  For lngI = 1 To UBound(vntaDateien)
   lngLetzteZeile = wksZiel.UsedRange.Rows.Count
   Set wbkCSV = Workbooks.Open(vntaDateien(lngI), local:=True)
   wksZiel.Cells(lngLetzteZeile + 1, 1) = vntaDateien(lngI)
   wbkCSV.Sheets(1).UsedRange.Copy Destination:=wksZiel.Cells(lngLetzteZeile + 2, 1)
   wbkCSV.Close False
  Next
End If
End Sub 

Jetzt habe ich eine Excel Datei mit den ca. 300.000 Messwerten (Zeilen) und jetzt würde ich die gerne so Auswerten das ich für jeden Tag den höchsten Durchfluss1 und Durchfluss 2 (sofern der Wert nicht Null ist) inkl. der Daten „lt101 cm“ „lt102 cm“ und „tt101 C“ zum passenden höchsten Durchfluss1 und Durchfluss2 Ergebnis habe.

Ich habe eine Test-Datei (nicht mit allen Werten) mal als download hinzugefügt, ich hoffe es kann mir wer helfen ! DANKE für euere Zeit und Hilfe!

LINK:
http://we.tl/QNAPhFs3Oo


beste Grüße
sims
Mitglied: Meierjo
Meierjo 22.10.2014 um 10:07:25 Uhr
Goto Top
Hallo

wie soll das Ergebnis aussehen, etwa so??
a35b8cf0718870e655b2035416154eab


Gruss Urs
Mitglied: sims
sims 22.10.2014 um 10:52:53 Uhr
Goto Top
so solle es dann ausschauen .


deb36cace37430748fcdeef4bc0509d7



gruss
sims
Mitglied: Meierjo
Lösung Meierjo 22.10.2014, aktualisiert am 24.10.2014 um 17:37:53 Uhr
Goto Top
Hallo

Probier mal diesen Code

Sub CSV_Import()
    Dim vntaDateien As Variant
    Dim lngI As Long
    Dim lngLetzteZeile As Long
    Dim wbkCSV As Workbook
    Dim wksZiel As Worksheet
    Dim rOut As Range
    Set rOut = Range("A1")  
    lngLetzteZeile = 1
    With rOut.Range("A1:G1").Resize(rOut.Worksheet.Rows.Count - rOut.Row + 1)  
        .ClearContents
        .Rows(1).Value = Split("Date,Time,Durchfluss1,Durchfluss2,lt101 cm,lt102 cm,tt101 C", ",")  
    End With
    lngLetzteZeile = 1
    vntaDateien = Application.GetOpenFilename _
    ("csv-Dateien (*.csv), *.csv", MultiSelect:=True)  
    If IsArray(vntaDateien) Then
        Set wksZiel = ThisWorkbook.Sheets(1)
        For lngI = 1 To UBound(vntaDateien)
            lngLetzteZeile = wksZiel.UsedRange.Rows.Count
            lngLetzteZeile = ActiveSheet.Cells(1048576, 1).End(xlUp).Row
            Set wbkCSV = Workbooks.Open(vntaDateien(lngI), local:=True)
            'sortieren  
            wbkCSV.Worksheets(1).Sort.SortFields.Clear
            wbkCSV.Worksheets(1).Sort.SortFields.Add Key:=Range("C2:C1048576"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal  
            wbkCSV.Worksheets(1).Sort.SortFields.Add Key:=Range("D2:D1048576"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal  
            With wbkCSV.Worksheets(1).Sort
                .SetRange Range("A1:G1048576")  
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .Apply
            End With
            'Zeilen 3 bis Ende löschen  
            wbkCSV.Worksheets(1).Rows("3:1048576").Delete shift:=xlUp  
            'Dateiname kopieren  
            'wksZiel.Cells(lngLetzteZeile + 1, 1) = vntaDateien(lngI)  
            'Bereich kopieren  
            'wbkCSV.Sheets(1).UsedRange.Copy Destination:=wksZiel.Cells(lngLetzteZeile + 2, 1)  
            'nur die 2. Zeile kopieren  
            wbkCSV.Sheets(1).Rows("2:2").Copy Destination:=wksZiel.Cells(lngLetzteZeile + 1, 1)  
            wbkCSV.Close False
        Next
    End If
    wksZiel.Columns("A:G").EntireColumn.AutoFit  
    With wksZiel.Columns("A:G")  
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
End Sub

Gruss Urs
Mitglied: sims
sims 24.10.2014 um 17:37:50 Uhr
Goto Top
Super Sache Meierjo,
hat besten funktioniert!!! Besten DANK für deine Hilfe !!!!!


lg
sims