Excel - gleiche Inhalte aus mehreren Mappen zusammenfassen
Mal wieder eine Excel-Frage:
Ich habe mehrere Arbeitsmappen, in denen in Spalte A die Artikelnummer, in Spalte B der Artikelname, in Spalte C der Reklamationswert und in Spalte D die Reklamationsmenge steht.
Für jeden Monat hab ich eine Arbeitsmappe. Nun werden aber nicht in jedem Monat die selben Artikel reklamiert und in den jeweiligen Mappen sind nur die Artikel, die reklamiert wurden.
Ich möchte nun eine Gesamtmappe, bei der ich pro Artikelnummer, pro Monat den Wert und die Menge, die reklamiert wurde, sehe.
Geht das irgendwie?
Antwort schreiben
Antwort 1 von coros vom 14.10.2021, 11:49 Options
Hallo mel1980,
klar geht das irgendwie. Du müsstest nur mal schrieben, wie Du Dir das Endresultat vorstellst, denn das ist mir noch nicht ganz klar. Außerdem müsste man wissen, woran man an der Monatsdatei erkennt, um welchen Monat und welches Jahr es sich handelt. Außerdem müsste man wissen, liegen die Dateien alle im selben Verzeichnis?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von mel1980 vom 14.10.2021, 12:00 Options
Vielen Dank für die schnelle Antwort.
Das Endresultat sieht so aus:
Ich erhalte eine Gesamtübersicht, bei der ich in Spalte A die Artikelnummer habe (alle, die in den restlichen Mappen vorkommen, aber jede nur einmal), in Spalte B den dazugehörigen Artikelnamen, in Spalte C die Reklamationsmenge Januar, in Spalte D den Reklamationswert Januar, in E die Rekl.menge Feb, in F den Rekl.wert Feb usw.
Alle Monate sind in einer Datei, nur unterschiedliche Tabellenblätter, hab ich falsch formuliert. Die haben den Namen des jeweiligen MOnates und sind nur von diesem Jahr. Also von Jan-Sep.
Reicht das als Info? :)
Antwort 3 von coros vom 14.10.2021, 13:01 Options
Hallo mel1980,
Du musst schon etwas mehr über Deine Datei schreiben. Wir alle hier kennen Deine Datei nicht.
Befinden sich in der Datei noch weitere Tabelllenblätter oder nur die 9 Monatsblätter bzw. bis zu 12 Tabellenblätter für das gesamte Jahr?
Können Artikelnummern in einem Monat mehrfach vorkommen oder ist jede maximal 1x aufgeführt?
Das beste wäre, wenn Du mal eine Beispieldatei bei z.B.
http://www.file-upload.net/ ]hochladen und den Link, den Du erhälst, uns hier mitteilen würdest. Das würde u.U. einige Fragen von alleine klären.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von mel1980 vom 14.10.2021, 13:50 Options
http://www.file-upload.net/download-1945087/Test_Rekl..xls.html
hier der Link. Es befinden sich in der Originaldatei nur die Blätter der Monate. Aktuell 9, sollten aber zum Jahresende 12 sein.
In der Beispieldatei habe ich das Tabellenblatt "Übersicht", so stell ich mir das vor, wenn es eine Lösung gibt.
Jede Artikelnummer kommt pro MOnat nur 1x vor.
Danke, danke, danke.
Antwort 5 von malSchauen vom 14.10.2021, 14:01 Options
Hi,
Nur noch einmal zur Klarstellung:
Die ÜbersichtsTabelle soll wie im Downloadbeispiel mit in die Mappe der MonatsTabellen? Oder soll es ein eigenes ExcelFile sein?
bye
malSchauen
Antwort 6 von mel1980 vom 14.10.2021, 14:03 Options
Das ist mir eigentlich egal, so wie's am Einfachsten ist. :)
Antwort 9 von mel1980 vom 14.10.2021, 15:25 Options
Danke, das schaut schon ganz gut aus. Aber wenn ich jetzt neue MOnate mit neuen Artikelnummern einfüge, werden die nicht automatisch in die Übersicht geschrieben. Das ist eigentlich das Hauptproblem, denn wenn das passen würde, könnte ich auch mit SVERWEIS arbeiten. Aber so muss ich mir immer manuell die dazugekommenen Artikelnummern suchen.
Oder geht da noch was?
Antwort 10 von coros vom 14.10.2021, 15:33 Options
Hallo,
bei der Datei mit der Makrolösung ist das egal. Hauptsache es gibt das Tabellenblatt mit dem Namen "Übersicht". Die anderen Blätter der Datei werden alle nacheinander abgefragt.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 11 von mel1980 vom 14.10.2021, 15:37 Options
Aber mir werden neue Artikelnummern nicht in die Übersicht geschrieben. Oder was muss ich machen, damit die in Spalte A geschrieben werden? - Ich habe jetzt zum Testen eine neue ARbeitsmappe mit "Apr" und zwei neuen Artikelnummern angelegt und deine Formel nach rechts und unten kopiert. Aber ich erhalte in Spalte A keine weiteren Artikelnummern, als die, die bisher drinnen stehen.
Antwort 12 von malSchauen vom 14.10.2021, 15:56 Options
Hi,
Anbei mal mein Ansatz (Übersichtstabelle aus der Mappe entfernt, Übersicht wird in neuer Mappe erstellt):
RE_Test_Rekl.xlsMakro liegt auf Tastenkombination Strg+Shift+N
bye
malSchauen
Antwort 13 von coros vom 14.10.2021, 16:00 Options
Hallo,
von welcher Datei sprichst Du? Von Rainers oder von meiner?
MfG,
Oliver
Antwort 14 von mel1980 vom 14.10.2021, 16:00 Options
Super! Genau das brauch ich! Danke an alle!
Bewertungen gibts morgen, hab heute schon zu viele abgegeben. :)
Danke!
Antwort 16 von nighty vom 14.10.2021, 16:54 Options
hi all ^^
für interessierte ,hab da auch was gebastelt :-))
gruss nighty
Übersichtstabelle sollte zeile 4 anfangen
monatsnamen anpassen
Option Explicit
Sub Zusammenfassung()
Worksheets("Übersicht").Activate
Dim WksNamen As Variant
Dim QZeile As Long, ZZeile As Long, QZelle As Long, ZZelle As Long
Dim WksIndex As Integer, SpZaehler As Integer
WksNamen = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")
ZZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ReDim ArtNummernZiel(ZZeile, 1) As Variant
ArtNummernZiel() = Range("A1:A" & ZZeile)
For WksIndex = 0 To 11
Worksheets(WksNamen(WksIndex)).Activate
QZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ReDim ArtNummernQuelle(100, 1) As Variant
ReDim ArtWerte(QZeile, 2) As Variant
ArtNummernQuelle() = Range("A1:A" & QZeile)
ArtWerte() = Range("C1:D" & QZeile)
For QZelle = 4 To QZeile
For ZZelle = 4 To ZZeile
If ArtNummernQuelle(ZZelle, 1) = ArtNummernZiel(QZelle, 1) Then
Worksheets("Übersicht").Cells(QZelle, WksIndex + 3 + SpZaehler) = ArtWerte(ZZelle, 1)
Worksheets("Übersicht").Cells(QZelle, WksIndex + 3 + SpZaehler + 1) = ArtWerte(ZZelle, 2)
Exit For
End If
Next ZZelle
Next QZelle
SpZaehler = SpZaehler + 1
Next WksIndex
End Sub
Antwort 17 von malSchauen vom 14.10.2021, 18:16 Options
Hi,
@nighty
Manöverkritik, Bitte nicht böse auffassen. ;-)
Deine Auswertung passt in meinen Augen so nicht.
Zumindest nicht, so wie ich die Aufgabenstellung aufgefasst habe.
(Ich nehme Bezug auf die von mel1980 hochgeladene Tabelle, bei
der ich dann die Sheets für die fehlenden Monate ergänzt habe.
Ergebnisse in Übersicht!C4:E15 gelöscht)
1. Werden nur Artikel berücksichtigt, welche schon in der Übersicht verzeichnet sind.
Das mag von Dir ja beabsichtigt worden sein.
2. logischer Fehler in der Auwertung:
z.B.
Rekl.Wert 18/Rekl.Menge18 in der Übersicht im März bei Art.Nr.:12349 Test5
Die kommen imo aber von Art.Nr. 23459 Test15
Trage in der Übersicht einmal nur zwei Artikelnummern ein:
A4=12345 B5=Test1 (z.B. im Januar reklamiert)
A5=34574 B5=Test 27 (im März reklamiert)
=> Ziel-Zeile passt nicht
3. Es müssen immer alle Sheets vorhanden sein.
Widerspricht imo der Aufgabenstellung:
Zitat:
AW4
Es befinden sich in der Originaldatei
nur die Blätter der Monate. Aktuell 9, sollten
aber zum Jahresende 12 sein.
4. Flüchtigkeitsfehler?
If ArtNummernQuelle(
ZZelle, 1) = ArtNummernZiel(
QZelle, 1) Then
sollte wohl
If ArtNummernQuelle(
QZelle, 1) = ArtNummernZiel(
ZZelle, 1) Then
heissen?
bye
malSchauen
Antwort 18 von nighty vom 14.10.2021, 20:01 Options
hi malSchauen ^^
zu 1
zitat
Ich erhalte eine Gesamtübersicht, bei der ich in Spalte A die Artikelnummer habe (alle, die in den restlichen Mappen vorkommen, aber jede nur einmal
zu 2 + 4
ueble fluechtigkeitsfehler von variablen umbenennen
danke fuers korrigieren ^^
zu 3
ueber den index wollte ich nicht unbedingt gehen ,daher macht es sicherlich keine muehe 12 blaetter zu erstellen das die namen nun bekannt sind
gruss nighty
du hast das positive vergessen ^^
die geschwindigkeit ist hervorragend :-)
hier der von dir und mir korrigierte code ^^
Option Explicit
Sub Zusammenfassung()
Worksheets("Übersicht").Activate
Dim WksNamen As Variant
Dim QZeile As Long, ZZeile As Long, QZelle As Long, ZZelle As Long
Dim WksIndex As Integer, SpZaehler As Integer
WksNamen = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")
ZZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ReDim ArtNummernZiel(ZZeile, 1) As Variant
ArtNummernZiel() = Range("A1:A" & ZZeile)
For WksIndex = 0 To 11
Worksheets(WksNamen(WksIndex)).Activate
QZeile = Worksheets(WksNamen(WksIndex)).Cells(Rows.Count, 1).End(xlUp).Row
ReDim ArtNummernQuelle(QZeile, 1) As Variant
ReDim ArtWerte(QZeile, 2) As Variant
ArtNummernQuelle() = Range("A1:A" & QZeile + 1)
ArtWerte() = Range("C1:D" & QZeile)
For ZZelle = 4 To ZZeile
For QZelle = 4 To QZeile
If ArtNummernQuelle(QZelle, 1) = ArtNummernZiel(ZZelle, 1) Then
Worksheets("Übersicht").Cells(ZZelle, WksIndex + 3 + SpZaehler) = ArtWerte(QZelle, 1)
Worksheets("Übersicht").Cells(ZZelle, WksIndex + 3 + SpZaehler + 1) = ArtWerte(QZelle, 2)
Exit For
End If
Next QZelle
Next ZZelle
SpZaehler = SpZaehler + 1
Next WksIndex
End Sub
Antwort 19 von malSchauen vom 14.10.2021, 21:44 Options
Hi,
@nighty
zu 1.
Das kann man aus AW2 so herauslesen, wenn man das EingangsPosting übergeht.
(Weiß aber nur mel1980 ganz genau ;-) )
zu 2. und 4.
Jo, jetzt passt es wohl. (Wenn ich von Hand Vorarbeit in der Übersicht leiste)
zu 3. muss der Anwender selbst wissen...
zum Positiven:
Ah, ein Laufzeit-Fetischist ;-) also. Da wird mir dann aber die Frage erlaubt sein:
Warum dann nicht mit aller Konsequenz? Events, ScreenUpdate abschalten etc.
Und warum dann auch noch mit .Activate? was die Ausführung wohl doch
verzögern soll, wie ich oft höre.
Zahlen mit bereinigten Eingangsdaten ausgelesen:
(alle 12 Monate auf allen 3 Versionen mit identischen Daten, Code wie hier gepostet oder hochgeladen.)
erste Codezeile im Sub: ThisWorkbook.Sheets(1).Cells(1, 2) = Timer
letzte Codezeile im Sub: ThisWorkbook.Sheets(1).Cells(1, 3) = Timer - ThisWorkbook.Sheets(1).Cells(1, 2)
coros: ca 2,450sek
malSchauen: ca. 0,280sek
nighty: ca. 0,470sek
nighty (Events etc. off und Calc. manuell) dann: ca. 0,150sek
Dabei rechne ich Dir die nötige händische Vorarbeit in Übersicht! aber mal nicht an. ;-))
bye
malSchauen