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

Abfrage_über_mehrere_Tabellenblätter

Abfrage_über_mehrere_Tabellenblätter
17.08.2017 11:37:43
Hendrik
Hello again zusammen! :)
Robert hat mir gestern schon toll geholfen. Natürlich ist mir jetzt noch was zusätzliches eingefallen, wo ich natürlich auch direkt stümperhaft dran gescheitert bin :-D
Woran ich gerade scheitere:
Mit Robertss Lösung ist es möglich, das Tabellenblatt2 auf seine Spalte N nach allem, was im Februar liegt (01.02.2017-28.02.2017), zu durchsuchen.
Bei Treffer wird die entsprechende Zeile in das Tabellenblatt23 ("Versendungen") kopiert.
Anschließend wird die Anzahl der Treffer noch gezählt.
Nun wäre es toll, genau diese Abfrage nicht nur in Tabellenblatt2, sondern in den Tabellenblättern2 bis Tabellenblatt13 durchzuführen und weiterhin alle Treffer in Tabellenblatt23 zu kopieren inklusive Zählung.
Folgendes habe ich begonnen, aber das funktioniert natürlich nicht :-D
Fette Zeilen sind die von mir zu Roberts Lösung hinzugefügte Zeilen, damit ihr wisst, wo die Stümperei beginnt :)
Unten habe ich nochmal den ganzen Code hingeschrieben, für den Fall dass da etwas steht, was ihr braucht, um mir zu helfen, und ich eventuell übersehen habe mit zu bennen.
1)Aktuelle Frage

Sub FebruarVersendet()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim AnzahlGeplant
Dim WS_Count As Integer
Dim WS_CountMax As Integer
Dim i As Integer
WS_CountMax = 13
For i = 2 To WS_CountMax
Sheets(2).Select
'With Tabelle2 (Aus voriger Lösung, habe ich einfach nur dringelassen)
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 14).Value >= CDate("01.02.2017") And .Cells(Zeile, 14).Value Cells(1, 1) = i
Next i

With Sheets("Versendungen")
.Range("T5") = AnzahlGeplant
End With
End Sub
2)Lösung der gestrigen Frage:

Sub JanuarVersendet()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim AnzahlGeplant As Long, AnzahlFrüher As Long, AnzahlSpäter As Long
With Tabelle2
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 14).Value >= CDate("01.02.2017") And .Cells(Zeile, 14).Value = CDate("01.03.2017") Then
.Rows(Zeile).Copy Destination:=Sheets("Versendungen").Rows(n)
n = n + 1
AnzahlSpäter = AnzahlSpäter + 1
End If
Next Zeile
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 14).Value  "*"  _
Then
.Rows(Zeile).Copy Destination:=Sheets("Versendungen").Rows(n)
n = n + 1
AnzahlFrüher = AnzahlFrüher + 1
End If
Next Zeile
End With
With Sheets("Versendungen")
.Range("R4") = "Monat"
.Range("R5") = "Januar"
.Range("S4") = "Alle Versendungen von Themenspeicher Januar"
.Range("T4") = "Davon Versendungen im Februar"
.Range("U4") = "Davon Versendungen später als Februar"
.Range("V4") = "Davon Versendungen früher als Februar"
.Range("S5") = AnzahlGeplant + AnzahlFrüher + AnzahlSpäter
.Range("T5") = AnzahlGeplant
.Range("U5") = AnzahlSpäter
.Range("V5") = AnzahlFrüher
End With
End Sub

Vielen Dank vorab für eure Hilfe! :)
Viele Grüße,
Hendrik

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abfrage_über_mehrere_Tabellenblätter
17.08.2017 12:06:32
Werner
Hallo Hendrik,
wenn ich das richtig sehe, dann handelt es sich bei den Blättern 2 - 13 um die einzelnen Monate des Jahres?!?
Wenn ja, dann stellt sich die Frage wohin die Daten im Blatt "Versendungen" geschrieben werden sollen. So wie das jetzt ist, würden die Daten im Zielblatt immer wieder überschrieben werden. Am Schluß hättest du dann bei der Schleife über die Blätter 2 - 13 dann nur die Daten vom letzten Blatt (Blatt 13) im Zielblatt.
Zeig doch mal eine Beispielmappe mit 1-2 Monatsblättern und vor allem mit dem Zielblatt. Im Zielblatt dann bitte händisch die Daten von mindestens zwei Monatsblättern eintragen, damit man weiß, was wohin soll.
Gruß Werner
Anzeige
AW: Abfrage_über_mehrere_Tabellenblätter
17.08.2017 12:43:17
Hendrik
Hallo Werner! :)
Danke für deine schnelle Antwort.
Du hast Recht, die Blätter 2-13 sind die Monate Januar bis Dezember.
Mist, du hast Recht, das würde jedes mal überschrieben werden.
Vorstellung ist tatsächlich, dass die Treffer aus den einzelnen Blättern dann in Tabellenblatt23, "Versendungen", alle untereiander aufgelistet werden.
Ich hoffe, ich kriege das mit dem Upload richtig hin.
https://www.herber.de/bbs/user/115539.xlsx
Im Upload sieht man die Tabellen Januar und Februar sowie die Zieltabelle "Versendungen", wo die Treffer-Zeilen rein sollen inklusive Ergebnisausgabe.
Gesucht werden würde gerade nach allen Ideen in allen Tabellenblättern,, die in Spalte N im März versendet wurden (grün markiert).
Hast du dir das so vorgestellt?
Viele Grüße,
Hendrik
Anzeige
AW: Abfrage_über_mehrere_Tabellenblätter
17.08.2017 12:42:12
Robert
Hallo Hendrik,
wenn man den Code wie folgt umstellt/anpasst müsste es klappen.
Sub FebruarVersendet()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim AnzahlGeplant
Dim WS_Count As Integer
Dim WS_CountMax As Integer
Dim i As Integer
WS_CountMax = 13
n = 1
For i = 2 To WS_CountMax
With Sheets(i)
ZeileMax = .UsedRange.Rows.Count
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 14).Value >= CDate("01.02.2017") And .Cells(Zeile, 14).Value 

Zur Erläuterung:
Die erstmalige Zuweisung n=1 muss außerhalb der FOR-Schleife passieren, sonst würden die Zeilen immer wieder überschrieben.
Die Zeile "With sheets(i)" ist wichtig, sonst fehlt weiter unten bei ".Cells(Zeile, 14).Value" und ".Rows(Zeile)" der With-Teil. Ein "Select sheets(i)" ist kontraproduktiv.
Gruß
Robert
Anzeige
AW: Abfrage_über_mehrere_Tabellenblätter
17.08.2017 12:45:01
Hendrik
Hahaha, da haben wir uns eben um eine Minute verpasst! :-D
Hatte Probleme mit dem Upload...
danke schon mal für deine Hilfe!
Und vor allem für die Erklärung. Gerade die Hinweise helfen beim Lernen.
Ich probiere das gleich mal aus und geben Feedback :)
Bis gleich!
Viele Grüße,
Hendrik
AW: Abfrage_über_mehrere_Tabellenblätter
17.08.2017 13:05:47
Hendrik
Also er zeigt schon mal keinen Fehler an in der VBA-Maske :-D
Komisch ist nur: Es passiert gar nix, wenn ich den Befehl ausführe.
Ich vermute, dass es hier hakt, also dass er nicht auf die Tabellenblätter zugreifen kann:
For i = 2 To WS_CountMax
With Sheets(i)
Aber ich stehe total auf dem Schlauch, wie ich ihm das vermitteln sollte...
Habe es z.B. mit
For i = 2 To WS_CountMax
With Sheets(Tabellei)
probiert, aber das mag er überhaupt nicht :-D
Hast du eine Idee, wie ich es zum Laufen kriegen kann?
Viele Grüße,
Hendrik
Anzeige
AW: Abfrage_über_mehrere_Tabellenblätter
17.08.2017 13:23:37
Werner
Hallo Hendrik,
passiert nichts kann eigentlich nicht sein.
Gib mal hier noch die MessageBox mit ein
With Sheets(i)
MsgBox Sheets(i).Name

Lass den Code jetzt mal laufen. Jetzt müsste dir eigentlich die Namen der Blätter 2-13 angezeigt werden. So kannst du sehen, ob die Schleife über die Blätter funktioniert.
Zudem prüft der Code hier
If .Cells(Zeile, 14).Value >= CDate("01.02.2017") And .Cells(Zeile, 14).Value 

auf den Datumsbereich vom Februar. Das kann natürlich nur für den Februar funktionieren bei allen anderen Blättern natürlich nicht.
Im Moment kann ich nicht weiter helfen - kein Rechner.
Gruß Werner
Anzeige
AW: Abfrage_über_mehrere_Tabellenblätter
17.08.2017 13:28:55
Hendrik
Das ist witzig, er schmeißt mir eine Message-Box für jeden Monat aus, inklusive "Gesamt alle M", die ich nacheinander alle mit "ok" quittieren kann, aber sonst passiert nix.
Ich probiere mal weiter rum.
Solltest du heute nochmal Zeit + Rechnerzugang haben würde ich mich über deine Hilfe freuen :)
Bis hierhin auf jeden Fall schon mal vielen lieben Dank! :)
Viele Grüße,
Hendrik
AW: Abfrage_über_mehrere_Tabellenblätter
17.08.2017 14:07:14
Hendrik
Hello again Werner,
ich hab`s hingekriegt!
Die Datei ist ein Relikt eines Kollegen.
Es gab da diverse Änderungen der Tabellenblätter.
So existiert z.B. gar keine "Tabelle1" mehr.
Ich habe die for-Schleife also einfach auf 1-12 gesetzt statt 2-13 und dann lief's! :)
Voll eigenartig, für die Einzelabfragen (siehe Eingangspost ganz unten) musste noch bei Tabelle2 angefangen werden :-D
...
WS_CountMax = 12
n = 1
For i = 1 To WS_CountMax
With Sheets(i)
...
Jetzt bastle ich nochmal weiter, dass er mir schön farbige Leerzeilen nach den einzelnen Tabellenblättern macht und die Ergebnisse auch separat ausweist (also wie bisher die Gesamtsumme + zusätzlich die Treffer aus den einzelnen Blättern).
Vielen lieben Dank für deine schnelle und verständliche Hilfe Werner! :)
Viele Grüße,
Hendrik
Anzeige
Gerne u. viel Spaß beim Weiterbasteln. o.w.T.
17.08.2017 16:04:25
Werner
AW: Gerne u. viel Spaß beim Weiterbasteln. o.w.T.
19.08.2017 14:46:32
Hendrik
Hallo Werner!
Könntest du mir eventuell beim Basteln auch helfen? :-D
Ich habe gestern nochmal ein neues Posting gemacht, komme da aber nicht weiter.
Du hast mir schon mega geholfen, also kein Problem, wenn es jetzt erstmal reicht!
Sollte das Problem aber kein Großes für dich sein (in meinem Kopf ist es keins :-D), freue ich mich sehr, wenn du dir erneut die Zeit für mich nehmen würdest :)
Viele Grüße aus Düsseldorf,
Hendrik

370 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige