5.7k Aufrufe
Gefragt in Tabellenkalkulation von mel1980 Einsteiger_in (63 Punkte)
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?

19 Antworten

0 Punkte
Beantwortet von mel1980 Einsteiger_in (63 Punkte)
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.
0 Punkte
Beantwortet von
Hi,

Anbei mal mein Ansatz (Übersichtstabelle aus der Mappe entfernt, Übersicht wird in neuer Mappe erstellt):

RE_Test_Rekl.xls

Makro liegt auf Tastenkombination Strg+Shift+N

bye
malSchauen
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo,

von welcher Datei sprichst Du? Von Rainers oder von meiner?

MfG,
Oliver
0 Punkte
Beantwortet von mel1980 Einsteiger_in (63 Punkte)
Super! Genau das brauch ich! Danke an alle!

Bewertungen gibts morgen, hab heute schon zu viele abgegeben. :)

Danke!
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo mel1980,

als Alternative noch eine Formellösung mit einer gemeinsamen Erfassungstabelle.

www.file-upload.net/download-1945334/re2_Test_Rekl..xls.html

Gruß
Rainer
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von
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:
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von
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
...