Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
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
Inhaltsverzeichnis

Maximalwerte aus mehreren .txt Dateien Sammeln

Maximalwerte aus mehreren .txt Dateien Sammeln
25.01.2016 11:29:03
Fred
Hallo!
ich bin leider noch nicht sehr bewandert im Umgang mit Excel und hoffe, ich stelle mein Problem hier an der richtigen Stelle.
Es geht um folgendes:
Ich habe eine Reihe Messwerte in mehreren .txt Dateien (alle im selben Ordner, die Spalten sind durch Leerzeichen getrennt.)
Nun möchte ich in jeder dieser Datei das Maximum in Spalte B zwischen Zeile 428 und 1313 finden, und zusammen mit dem zugehörigen Spalte-A-Wert und dem Dateinamen in einer Tabelle ausgeben.
Von Hand würde das sehr lange dauern und ich würde gern ein Makro zur Lösung benutzen. Da fehlt mir jedoch das passende Wissen.
Vielen Dank für eure Hilfe,
Fred

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Maximalwerte aus mehreren .txt Dateien Sammeln
25.01.2016 15:08:39
fcs
Hallo Fred,
hier ein Makro mit entsprechender Funktionalität.
Gruß
Franz
'Makro in einem allgemeinen Modul
Sub prcGet_Max_from_TXT()
Dim wksZiel As Worksheet
Dim Zeile_Z As Long, Zeile As Long
Dim varA, dblMax As Double
Dim wkbTxt As Workbook, wksTxt As Worksheet
Dim varOrdner As Variant, varDatei
Dim varData As Variant
Set wksZiel = ActiveSheet
With wksZiel
'letteZeile in Spalte A mit Inhalt
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
'Ordner auswählen
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte den Ordner mit den Text-Dateien auswählen"
If .Show = -1 Then
varOrdner = .SelectedItems(1)
Else
GoTo Beenden
End If
End With
Application.ScreenUpdating = False
'txt-Dateien suchen
varDatei = Dir(varOrdner & "\*.txt")
Do Until varDatei = ""
'Textdatei öffnen - 1000er- und Dezimal-Trennzeichen anpassen, Local auf False _
setzen wenn Daten nicht mit den lokalen Einstellungen der Systemsteuerung übereinstimmen.
Application.Workbooks.OpenText Filename:=varOrdner & "\" & varDatei, Origin:=xlWindows, _
Startrow:=1, DataType:=xlDelimited, Tab:=False, Semicolon:=False, Comma:=False, _
Space:=True, Other:=False, ThousandsSeparator:=".", DecimalSeparator:=",", _
Local:=True
Set wkbTxt = ActiveWorkbook
Set wksTxt = wkbTxt.Sheets(1)
'Daten in SpaltenA und B in eine Daten-Array schreiben - Auswertung geht dann schneler.
With wksTxt
varData = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 1))
End With
'Werte für Spalte A und B zurücksetzen
varA = "no Data"
dblMax = -99999
If UBound(varData, 1) >= 428 Then
varA = varData(428, 1)
dblMax = varData(428, 2)
For Zeile = 428 To UBound(varData, 1)
If IsNumeric(varData(Zeile, 2)) Then
If varData(Zeile, 2) > dblMax Then
varA = varData(Zeile, 1)
dblMax = varData(Zeile, 2)
End If
End If
Next
End If
'text-Datei ohne speichern wieder schliesen
wkbTxt.Close savechanges:=False
'daten-Array löschen
Erase varData
'gefundenen Werte in Zieltabelle eintragen
With wksZiel
Zeile_Z = Zeile_Z + 1
.Cells(Zeile_Z, 1) = varA
.Cells(Zeile_Z, 2) = dblMax
.Cells(Zeile_Z, 3) = varDatei
End With
'nächste datei suchen
varDatei = Dir
Loop
Beenden:
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Maximalwerte aus mehreren .txt Dateien Sammeln
25.01.2016 15:36:46
Fred
Hallo Franz,
vielen Dank für die schnelle Antwort!
Leider klappt´s noch nicht ganz. ich habe einmal die entstandene Tabelle angehängt, sowie eine .txt-Quelle. Das problem nun ist noch dass Spalte A genau den Wert aus Zeile 428 anzeigt (mit dem Wert aus Spalte B direkt angehängt, obwohl ein Leerzeichen sie trennt. also 380,1167,29 müsste A:380,116 und B:7,29 heißen. außerdem ist dies nicht das Maximum). Spalte B ist 0.
Die entstandene Tabelle:
Userbild
Die Quell-txt-Datei:
https://www.herber.de/bbs/user/103016.txt
Die Tausendertrennzeichen sind hier "," und die Dezimaltrennzeichen "."
Was ist noch falsch?
VG
Fred

Anzeige
AW: Maximalwerte aus mehreren .txt Dateien Sammeln
26.01.2016 08:55:53
Fred
Ich glaube, das Problem könnte sein, dass die Textdatei nicht richtig eingelesen wird. Schließlich trennt Excel die beiden Zahlen ja auch nicht. Damit wäre ja auch klar warum der Maximalwert 0 ist. Dazu gibt er dann den ersten Wert an der zu 0 gehört, richtig?

AW: Maximalwerte aus mehreren .txt Dateien Sammeln
26.01.2016 09:13:40
Fred
Gelöst!
ich habe unter:
'Werte für Spalte A und B zurücksetzen
varA = "no Data"
dblMax = -99999
If UBound(varData, 1) >= 428 Then
varA = varData(428, 1)
dblMax = varData(428, 2)
For Zeile = 428 To 1313 ' Vielen Dank!
Fred

AW: Maximalwerte aus mehreren .txt Dateien Sammeln
26.01.2016 11:54:10
fcs
Hallo Fred,
du solltest die Daten in der Text-Datei und das, was Excel beim Import daraus macht wirklich noch einmal prüfen.
Soweit ich festgestellt hab ist das Zeichen zwischen den Werten in Spalte A und B kein Leerzeichen, sondern ein Tab-Zeichen.
Die Darstellung der Zahlen in der Textdatei entspricht Zahlen mit Koma als Dezimalzahl.
Mit den Einstellungen Trennzeichen Tab:=True und Space:=False
Decimalseparator:=","
für den Daten-Import kommen auch vernünftige Daten in Excel heraus.
Die 1. Zeile der Textdatei wird beim Import in 14 Zeilen-Kopfdaten umgesetzt und ab Zeile 15 Beginnen die Datenpaare mit den Spectraldaten. In Zeile 2062 steht das letzte Datenpaar.
In der nachfolgenden Form liefert das Makro für deine Beispieldatei als Ergebnis:
Max-Wert B: 37,54
Wert in A: 660,499
Gruß
Franz
'Makro in einem allgemeinen Modul
Sub prcGet_Max_from_TXT()
Dim wksZiel As Worksheet
Dim Zeile_Z As Long, Zeile As Long
Dim varA, dblMax As Double
Dim wkbTxt As Workbook, wksTxt As Worksheet
Dim varOrdner As Variant, varDatei
Dim varData As Variant
Set wksZiel = ActiveSheet
With wksZiel
'letteZeile in Spalte A mit Inhalt
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
'Ordner auswählen
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte den Ordner mit den Text-Dateien auswählen"
If .Show = -1 Then
varOrdner = .SelectedItems(1)
Else
GoTo Beenden
End If
End With
Application.ScreenUpdating = False
'txt-Dateien suchen
varDatei = Dir(varOrdner & "\*.txt")
Do Until varDatei = ""
'Textdatei öffnen - 1000er- und Dezimal-Trennzeichen anpassen, Local auf False _
setzen wenn Daten nicht mit den lokalen Einstellungen der Systemsteuerung übereinstimmen.
Application.Workbooks.OpenText Filename:=varOrdner & "\" & varDatei, Origin:=xlWindows, _
Startrow:=1, DataType:=xlDelimited, Tab:=True, Semicolon:=False, Comma:=False, _
Space:=False, Other:=False, ThousandsSeparator:=".", DecimalSeparator:=",", _
Local:=True
Set wkbTxt = ActiveWorkbook
Set wksTxt = wkbTxt.Sheets(1)
'Daten in SpaltenA und B in eine Daten-Array schreiben - Auswertung geht dann schneler.
With wksTxt
varData = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 1))
End With
'Werte für Spalte A und B zurücksetzen
varA = "no Data"
dblMax = -99999
If UBound(varData, 1) >= 428 Then
varA = varData(428, 1)
dblMax = varData(428, 2)
For Zeile = 428 To 1313 'UBound(varData, 1)
If IsNumeric(varData(Zeile, 2)) Then
If varData(Zeile, 2) > dblMax Then
varA = varData(Zeile, 1)
dblMax = varData(Zeile, 2)
End If
End If
Next
End If
'text-Datei ohne speichern wieder schliesen
wkbTxt.Close savechanges:=False
'daten-Array löschen
Erase varData
'gefundenen Werte in Zieltabelle eintragen
With wksZiel
Zeile_Z = Zeile_Z + 1
.Cells(Zeile_Z, 1) = varA
.Cells(Zeile_Z, 2) = dblMax
.Cells(Zeile_Z, 3) = varDatei
End With
'nächste datei suchen
varDatei = Dir
Loop
Beenden:
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Maximalwerte aus mehreren .txt Dateien Sammeln
26.01.2016 15:16:11
Fred
Danke vielmals!

230 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige