Anzeige
Archiv - Navigation
1848to1852
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

Worksheets durchlaufen, Daten filtern

Worksheets durchlaufen, Daten filtern
21.09.2021 11:36:26
Andreas
Hallo liebe Forumer,
ich benötige wieder mal eure Profihilfe.
Ich habe unten stehenden Code für eine Auswertung (Rechnungen auslesen). Dieser läuft problemlos.
Ich möchte nun gerne eine weitere Auswertung (Zahlungen auslesen) erstellen.
Hierzu wird nur der loSuchbegriff benötigt, nachdem gesucht werden soll. Jedoch müssen alle Tabellenblätter durchlaufen werden, statt wie unten stehend
das Monatsblatt. Wie kann ich das bewerkstelligen? (Die Ergebniskopie passe ich danach noch an).

Option Explicit
Public Sub Daten_Rechnungen_holen()
Dim wbQuelle As Workbook, wsQuelle As Worksheet
Dim strPfad As String, strBlattname As String
Dim loLetzte As Long, loSuchbegriff As Long
Dim boVorhanden As Boolean
'### Deinen Pfad hier anpassen #####
strPfad = "\\NAS-2T\fibu\"
strBlattname = ActiveSheet.Name & " " & Right(Range("J3"), 2)
loSuchbegriff = ActiveSheet.Range("J1")
Application.ScreenUpdating = False
'Zielbereich leeren
With ActiveSheet
loLetzte = .Cells(.Rows.Count, 15).End(xlUp).Row
If loLetzte >= 4 Then
.Range(.Cells(4, 15), .Cells(loLetzte, 20)).ClearContents
End If
End With
'Datei Ausgangsrechnungen öffnen
Set wbQuelle = Workbooks.Open(strPfad & "Ausgangsrechnungen_rev2.7.xlsx")
With wbQuelle
'richtiges Quellblatt wählen
For Each wsQuelle In .Worksheets
If wsQuelle.Name = strBlattname Then
boVorhanden = True
'Quellblatt nach Kostenstelle filtern
With Worksheets(wsQuelle.Name)
loLetzte = .Cells(.Rows.Count, 5).End(xlUp).Row
.Range("$A$4:$T$" & loLetzte).AutoFilter Field:=5, Criteria1:=loSuchbegriff
loLetzte = .Cells(.Rows.Count, 5).End(xlUp).Row
If loLetzte """";P9;Q9)"
.Range(.Cells(9, 20), .Cells(loLetzte, 20)).Copy
.Range("M9").PasteSpecial Paste:=xlPasteValues
.Range(.Cells(9, 16), .Cells(loLetzte, 20)).ClearContents
End With
'Quellblatt ohne speichern schließen
wbQuelle.Close (False)
Application.CutCopyMode = False
End With
End If
End With
Exit For
End If
Next wsQuelle
End With
If Not boVorhanden Then
'MsgBox "Es ist kein Tabellenblatt " & """" & strBlattname & """" & " in Ausgangsrechnung vorhanden."
wbQuelle.Close (False)
End If
Dim cell As Range
For Each cell In Columns(11).SpecialCells(xlCellTypeConstants, 1 + 2)
With cell
If IsEmpty(cell) = False Then
.Offset(0, 3).NumberFormat = "DD.MM.YYYY" 'Format(Date, "General Date") Col N
.Offset(0, 3).HorizontalAlignment = xlCenter
.Offset(0, 4).Style = "Currency" 'Col O
.Offset(0, 2).HorizontalAlignment = xlLeft
With .Resize(, 5)
.Interior.Color = RGB(217, 217, 217)
.Font.Size = 12
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeLeft).Weight = xlMedium
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeRight).Weight = xlMedium
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
End With
End If
End With
Next cell
Range("K1:O1").EntireColumn.AutoFit
Set wbQuelle = Nothing
Application.ScreenUpdating = True
End Sub

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

Betreff
Datum
Anwender
Anzeige
nur mal so...
21.09.2021 11:40:21
Oberschlumpf
Hi Andreas,
du bist schon so oft mit dabei - und damit hast du auch ne super Wahl getroffen! - das hier ist das beste Excel-Forum, dass ich kenne!
Ich verstehe nur nicht, dass du eigtl immer erstmal...nur Text...oder Text + Code zeigst, auch wenn du fast immer wieder um ne Bsp-Datei gebeten wurdest.
Wieso zeigst du denn bei deinen Erstfragen, vor allem jetzt, weil echt viel Code, nicht gleich die Bsp-Datei mit per Upload?
Das ist meine Frage.
Danke für Feedback.
Ciao
Thorsten
AW: nur mal so...
21.09.2021 12:00:59
Andreas
Hallo Thorsten,
sicherlich hast du damit recht. Ich gelobe auch Besserung.
Hier nun der Link zur Datei.
https://www.herber.de/bbs/user/148181.xlsx
Es sollen alle Tabellenblätter (ca. 50) nach dem loSuchbegriff durchsucht werden (immer in Spalte E (Pr.-Nr.)).
Wenn Überseinstimmung, sollten jeweils die Zeilen der Spalten R,S & T kopiert und je aufsummiert werden.
Danach möchte ich das Ergebnis im aufrufenden Sheet darstellen.
Ich hoffe das war jetzt soweit verständlich ausgedrückt.
Danke
Andreas
Anzeige
AW: Worksheets durchlaufen, Daten filtern
21.09.2021 11:45:23
Pierre
Hallo Andreas,
ich habe mir deinen Code jetzt nicht wirklich intensiv angesehen.
Als Denkanstoß: Um alle Blätter zu durchlaufen, geht das z. B. nach folgendem Schema:

For Each ws In ThisWorkbook.Worksheets
'dein weiterer Code
Next ws
Ganz oben musst du natürlich noch "Dim ws as Worksheet" einfügen.
Gruß Pierre
Nachtrag, falls einzelne Blätter ausgeschlossen ..
21.09.2021 13:15:36
Pierre
.. werden sollen:

For Each ws In ThisWorkbook.Worksheets
If ws.Name  "Tabelle1" Then                                 'Tabellenname anpassen
'dein weiterer Code
End If
Next ws
Also einfach innerhalb des For-Each noch einen If-Block einfügen. Mit

If ws.Name  "Tabelle1" Or "Tabelle2" Then
kannst du auch mehrere ausschließen.
Gruß Pierre
Anzeige
AW: Nachtrag, falls einzelne Blätter ausgeschlossen ..
21.09.2021 13:21:50
Andreas
Hallo Pierre,
danke für deine Antworten. Es sollen eigentlich keine Tabellen aussen vor gelassen werden.
Es soll in jedem Blatt geprüft werden, ob der Suchbegriff (Pr-Nr.) vorhanden ist. Ist dies der Fall
müssen je die Werte aus den Spalten R,S und T in die Ursprungsdatei geschrieben werden.
In meinem geposteten Code überprüft er zusätzlich den Tabellennamen. Dies brauche ich hier aber nicht.
Gruß
Andreas
AW: Nachtrag, falls einzelne Blätter ausgeschlossen ..
21.09.2021 13:28:04
Pierre
Hallo Andreas,
ich war wohl müde ;-)
Das hatte ich falsch verstanden, aber schaden kann es sicher auch nicht, das zu wissen.
Gruß Pierre

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige