Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: wie oft gibt es "abc" in Textdatei?

wie oft gibt es "abc" in Textdatei?
09.12.2005 23:24:29
michael
Hallo,
Ich lese aus einem Logfile Ergebnisse aus.
Als erstes suche ich nach "Thermo". Wenn "Thermo" gefunden wurde wird nach "Temp" gesucht und die Werte ausgelesen.
Nun kommt aber "Thermo" mehrmals vor und ich möchte nach einander nach Thermo und dann nach Temp suchen, dann das nächste Thermo und das zugehörige Temp usw.
Nun dachte ich könnte es 2 Lösungen geben.
Ich zähle vorab wie oft "Thermo" in der Datei vorkommt und durchlaufe ein Loop oder ich schaffe es irgendwie, dass nach dem die Werte ausgelesen wurden erneut das nächste Thermo gesucht wird - nur wie?
Gibt es einen befehl mit dem ich zählen kann wie oft z.B. "Thermo" in einer textdatei enthalten ist oder geht das nur über
Do Until EOF (intFile)
Input #intFile, strLine
If InStr(1, strLine, "Thermo") 0 Then n=n+1
End If
Loop
2.
ich durchsuche nach dem obigen Schema Do Until... eine Textdatei. Im ersten durchgang suche ich nach bestimmten werten bis ich EOF erreicht habe.
Nun möchte ich in einem 2.Durchgang eine weitere Suche starten. Wie komme ich aber wieder an den Anfang meiner Datei. Geht das mit einem Befehl oder nur in dem ich Close #intfile und anschließend wieder Open strFile For Input as #intFile schreibe?
Danke und viele grüße
Michael
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: wie oft gibt es "abc" in Textdatei?
09.12.2005 23:45:54
Erich
Hallo Michael,
warum willst du das File mehrfach lesen? Das kannst du in einem Durchgang machen:

Do Until EOF(intFile)
Input #intFile, strLine
If InStr(1, strLine, "Thermo") <> 0 Then nThermo = nThermo + 1
If InStr(1, strLine, "temp") <> 0 Then nTemp = nTemp + 1
Loop

Anmerkung:
Sollte der jeweilige Begriff mehrmals in einem Satz vorkommen, wird er trotzdem nur ein Mal gezählt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: wie oft gibt es "abc" in Textdatei?
10.12.2005 00:39:56
michael
Hallo Erich,
danke für die Hilfe.
Also ich suche nach dem 1. Thermo und füge die Zeile in Excel ein, dann die Suche nach Temp und die Zeile die Temp enthält wird übertragen. Dann die folgenden Thermo und Temp.
Das habe ich so gelöst
Do Until EOF (intFile)
Input #intFile, strLine
If InStr(1, strLine, "Thermo") 0 Then
Cells(Row, 1).Value = strLine
Exit Do
End If
Loop
Das selbe mit Temp. Durch das Exit Do ist dann aber das MAcro beendet ohne nach den verbleibenden Thermo zu suchen.
Deshalb die Frage ob ich mit einem Befehl die Anzahl der Thermo ermitteln kann. (Dachte an sowas wie count "thermo" oder so ähnlich)
Wahrscheinlich geht es aber nur per Schleifenzähler mit If InStr(1, strLine, "Thermo") 0 Then nThermo = nThermo + 1.
Um meine Daten thematisch zu sortieren suche ich zuerst nach Thermo und Temp. Wenn ich EOF erreicht habe muss ich nach CPU einträge wieder von oben suchen. Deshalb die Frage, wie ich wieder an den Beginn der Datei komme.
Wie kann ich das realisieren?
Danke und viele Grüße
Michael
Anzeige
AW: wie oft gibt es "abc" in Textdatei?
10.12.2005 07:52:56
Erich
Hallo Michael,
bei mehreren Suchbegriffen würd ich das so machen:

Sub SucheInTextfile()
Dim strSuch(10) As String, intAnz(10) As Integer
Dim intFile As Integer, strLine As String, ii As Integer, pp(10) As Integer
strSuch(0) = "Thermo"
strSuch(1) = "temp"
strSuch(2) = "CPU"
strSuch(3) = "usw."
' usw.
intFile = FreeFile(1)
Open "f:\exc\w-w-w\tmp\Suche.txt" For Input As #intFile
Do While Not EOF(intFile)
Line Input #intFile, strLine
For ii = 0 To 10
If strSuch(ii) > "" Then
pp(ii) = InStr(strLine, strSuch(ii))
While pp(ii) > 0
intAnz(ii) = intAnz(ii) + 1
pp(ii) = InStr(pp(ii) + Len(strSuch(ii)), strLine, strSuch(ii))
Wend
End If
Next ii
Loop
Close #intFile
'                                                  Ausgabe z. B. so:
For ii = 0 To 10
If strSuch(ii) > "" Then
Cells(ii + 2, 1) = strSuch(ii)
Cells(ii + 2, 2) = intAnz(ii)
End If
Next ii
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
TxtDatei - "Cursor" wieder an den Beginn setzen
10.12.2005 12:33:08
michael
Hallo Erich,
danke für die Hilfe.
Ich habs noch nicht getestet, aber ich vermute dein Code macht etwas anderes als das was ich vorhabe. Das Problem, ich habe eigentlich einen funktionierenden Macro und es wäre sehr viel Arbeit das umzustricken.
Der Logfile sieht im Groben so aus
Thermo
...
CPU
...
Temp
...
Thermo
...
CPU
...
Temp
...
Jetzt such ich nach Thermo und alle Einträge die nach Temp folgen, dann das nächste Thermo usw. bis EOF
Zuletzt will ich alle CPU-Zeiten listen. Dazu muß ich den virtuellen Cursor in der TxtDatei wieder nach oben bringen. Ich hab das bisher mit close und anschließendem öffnen gelöst - könnte mir aber vorstellen, dass es auch einen Befehl dafür gibt den "Cursor" an den Beginn zu setzen, um wieder von Anfang die Datei durchsuchen zu können.
Danke und viele Grüße
Michael
Anzeige
AW: TxtDatei - "Cursor" wieder an den Beginn setzen
10.12.2005 12:41:19
Nepumuk
Hallo Michael,
wenn du seriell liest und schreibst, kannst du den Cursor nicht platzieren. Da musst du die Textdatei zu- und wieder aufmachen.
Gruß
Nepumuk

Danke!!
10.12.2005 13:10:56
michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige