Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1664to1668
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

Text in vielen Tabellenblättern zählen &auswerten

Text in vielen Tabellenblättern zählen &auswerten
08.01.2019 14:54:18
Tobias
Hallo liebe Excel Freunde,
bin neu hier und da die Herbers Seite beui mir als NR1 der Info Quelle dienst, richte ich meine Frage direct mal an euch:
Ich baue mir eine recht komplexe Tabelle zusammen, Seite 1 (Sheet1) dient dabei als Übersicht. Täglich warden neue Textdateien in einem Ordner abgespeichert (durchnummeriert zB. 1.txt), und zwar 365x. Jede Datei wird via vba als eigenständige Tabelle importiert.
Dazu habe ich folgenden VBA Code:
Sub Alle_Textdateien()
strExt = "*.txt"       'Dateiextension ggf. anpassen
ZuÖffnendeDatei = Application.GetOpenFilename("Textdateien (" & strExt & "), " & strExt,  _
Title:="Verzeichnisauswahl, erste Datei auswählen")
If ZuÖffnendeDatei = False Then Exit Sub
'Die ausgewählte Datei ist egal. es wird hier nur das Verzeichnis der Datei ausgewertet
strPath = CurDir & "\"
If strPath = "" Then
Exit Sub
Else
ChDir strPath
strFile = Dir(strPath & strExt) 'hier wird die erste Datei gefunden
Do While Len(strFile) > 0
Workbooks.OpenText Filename:=strPath & strFile, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, _
Tab:=True, Semicolon:=False, Comma:=False, _
Space:=True, Other:=False, trailingMinusNumbers:=True
Sheets(1).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
'...weiter mit Änderungen an der Tabelle
strFile = Dir() ' nächste Datei
Loop
End If
End Sub
Hierzu bereits meine erste Frage. Kann man verhindern, dass mehrere Dateien mehrfach importiert werden (Beispielsweise, wenn ich am Tag 6 nochmal alle importiere,würden alle vorherigen Tage fälschlicherweise mehrfachweise importiert warden.
Nun aber zu meinem eigentlichen Problem.
Es soll in jedem Tabellenblatt gechekt warden, wie oft ein bestimmter Benutzername vorkommt. Das Ergebnis soll nach Datum sortiert unter den jeweilen Benutzer eingetragen warden.
Ich habe mich selber rangesetzt und den Code bisher so geschrieben, dass er ein Tag ausliest und die Werte richtig einsetzt. Jetzt will ich aber nicht, den Code 365x mal eintippen,damit die folge Tage daruntern eingetragen warden. Gibt es da möglicherweise eine Art Schleife?
Hier mein bisheriger Code dazu:
Sub Checkforsheets()
Dim myWsh As Worksheet
On Error Resume Next
' Arbeitsblattname anpassen
Set myWsh = Worksheets("1")
If Err.Number  0 Then Exit Sub
On Error GoTo 0
'ab hier neu
i = 0
j = 0
k = 0
l = 0
m = 0
n = 0
o = 0
p = 0
r = 0
For Each Rng In Sheets("1").UsedRange
If Rng.Value = Range("E6").Value Then i = i + 1
Sheets("Sheet1").Range("E7").Value = i
If Rng.Value = Range("F6").Value Then j = j + 1
Sheets("Sheet1").Range("F7").Value = j
If Rng.Value = Range("G6").Value Then k = k + 1
Sheets("Sheet1").Range("G7").Value = k
If Rng.Value = Range("H6").Value Then l = l + 1
Sheets("Sheet1").Range("H7").Value = l
If Rng.Value = Range("I6").Value Then m = m + 1
Sheets("Sheet1").Range("I7").Value = m
If Rng.Value = Range("J6").Value Then n = n + 1
Sheets("Sheet1").Range("J7").Value = n
If Rng.Value = Range("K6").Value Then o = o + 1
Sheets("Sheet1").Range("K7").Value = o
If Rng.Value = Range("L6").Value Then p = p + 1
Sheets("Sheet1").Range("L7").Value = p
If Rng.Value = Range("M6").Value Then q = q + 1
Sheets("Sheet1").Range("M7").Value = q
If Rng.Value = Range("N6").Value Then r = r + 1
Sheets("Sheet1").Range("N7").Value = r
Next Rng
End Sub

Vielen Dank im Voraus

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Text in vielen Tabellenblättern zählen &auswerten
08.01.2019 16:52:54
Rudi
Hallo,
teste mal.
Sub Alle_Textdateien()
Dim wks As Worksheet
Dim strPath As String, strFile As String
Const strExt = "*.txt"        'Dateiextension ggf. anpassen
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
strPath = .SelectedItems(1)
End If
End With
If Len(strPath) Then
strPath = strPath & "\"
strFile = Dir(strPath & strExt) 'hier wird die erste Datei gefunden
Do While Len(strFile) > 0
'prüfen ob bereits importiert
On Error Resume Next
Set wks = Worksheets(Left(strFile, Len(strFile) - 4))
On Error GoTo 0
If wks Is Nothing Then  'nicht vorhanden
Workbooks.OpenText Filename:=strPath & strFile, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, _
Tab:=True, Semicolon:=False, Comma:=False, _
Space:=True, Other:=False, trailingMinusNumbers:=True
Sheets(1).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
'...weiter mit Änderungen an der Tabelle
End If
strFile = Dir() ' nächste Datei
Loop
End If
End Sub
Sub CheckForSheets()
Dim myWsh As Worksheet
Dim wksSheet1 As Worksheet
Dim rng As Range
Dim arrCount(), iCounter As Integer, n As Integer
Dim arrNames
Application.ScreenUpdating = False
Set wksSheet1 = Sheets("Sheet1")
arrNames = wksSheet1.Range("E6:N6")
ReDim arrCount(1 To Worksheets.Count - 1, 1 To UBound(arrNames, 2))
For Each myWsh In Worksheets
If Not myWsh Is wksSheet1 Then
n = n + 1
For Each rng In myWsh.UsedRange
For iCounter = 1 To UBound(arrNames, 2)
If rng = arrNames(1, iCounter) Then
arrCount(n, iCounter) = arrCount(n, iCounter) + 1
End If
Next iCounter
Next rng
End If
Next myWsh
wksSheet1.Cells(7, 5).Resize(UBound(arrCount), UBound(arrCount, 2)) = arrCount
End Sub

Gruß
Rudi
Anzeige
AW: Text in vielen Tabellenblättern zählen&auswert
08.01.2019 17:17:56
Tobias
Hi Rudi,
danke vielmals für deine Antwort.
Leider kann ich damit keine Textdatei mehr finden (obwohl die definitv da sind).
Ansonsten klingt das schonmal sehr gut...und logisch ☺
LG Tobi
AW: Text in vielen Tabellenblättern zählen&auswert
08.01.2019 17:26:21
Tobias
Edit: Der zweite Teil funktioniert Herausragend...bin total begeistert!
Danke!!!
AW: Text in vielen Tabellenblättern zählen&auswert
08.01.2019 23:14:08
Rudi
Hallo,
mit dem ersten Code wählst du nur den Ordner aus. Es werden dann alle "*.txt" importiert oder auch nicht.
Gruß
Rudi

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige