Excel Makro Tabellen vergleichen und Werte vervollständigen
Hallo! Ich suche dringend Hilfe..
Es geht um eine Excel Datei z.b. (test.xls) mit mehreren Inhalten.
(In der ersten Zeile steht natürlich immer die Überschrift)
Spalte A bis D beinhalten die Artikelnummer (A=123,B=456,C=789,D=000) Die komplette Artikelnnummer lautet also: 123456789000.
Spalte E bis J beinhalten Informationen über das Produkt. (E=Obst, F=Birne, G=Preis, H=Menge etc.)
In einer anderen Excel Datei z.b. (vorlage.xls) habe ich mehrere Tabellenblätter unterteilt in Artikelnummern. z.b:
Tabelle1 Artikelnummer: 123456789000 (A=123,B=456,C=789,D=000) bis 123456789020 (A=123,B=456,C=789,D=020)
Tabelle2 Artikelnummer: 123456789021(A=123,B=456,C=789,D=021) bis 123456789050(A=123,B=456,C=789,D=050)
usw. bis Tabelle 10
Jetzt möchte ich das die Artikelnummern beider Dateien verglichen werden und bei identischer Artikelnummer (Spalte A - D) die komplette Zeile also von der test.xls übernommen werden soll in das jeweilige Tabellenblatt der vorlage.xls Datei ab Spalte A Zeile 30. Die Artikelnummern können auch mehrfach vorkommen mit unterschiedlichen Inhalten wie beispielsweise die Spalte G mit unterschiedlichen Preisen oder die Spalte H mit unterschiedlichen Mengen.
Praktisch wäre es auch die Preise und Mengen in den jeweiligen Tabellenblätter zu summieren, damit man sofort einen Überblick hat.
Zu guter Letzt, müsste man die Endpreise und die Endmengen in ein seperates Tabellenblatt (Gesamtergebnis) aufführen und summieren um ein Gesamtbetrag und eine Gesamtmenge zu erhalten.
Bin ja mal gespannt ob das jemand hinbekommt..
Danke schon mal im Voraus!
Es geht um eine Excel Datei z.b. (test.xls) mit mehreren Inhalten.
(In der ersten Zeile steht natürlich immer die Überschrift)
Spalte A bis D beinhalten die Artikelnummer (A=123,B=456,C=789,D=000) Die komplette Artikelnnummer lautet also: 123456789000.
Spalte E bis J beinhalten Informationen über das Produkt. (E=Obst, F=Birne, G=Preis, H=Menge etc.)
In einer anderen Excel Datei z.b. (vorlage.xls) habe ich mehrere Tabellenblätter unterteilt in Artikelnummern. z.b:
Tabelle1 Artikelnummer: 123456789000 (A=123,B=456,C=789,D=000) bis 123456789020 (A=123,B=456,C=789,D=020)
Tabelle2 Artikelnummer: 123456789021(A=123,B=456,C=789,D=021) bis 123456789050(A=123,B=456,C=789,D=050)
usw. bis Tabelle 10
Jetzt möchte ich das die Artikelnummern beider Dateien verglichen werden und bei identischer Artikelnummer (Spalte A - D) die komplette Zeile also von der test.xls übernommen werden soll in das jeweilige Tabellenblatt der vorlage.xls Datei ab Spalte A Zeile 30. Die Artikelnummern können auch mehrfach vorkommen mit unterschiedlichen Inhalten wie beispielsweise die Spalte G mit unterschiedlichen Preisen oder die Spalte H mit unterschiedlichen Mengen.
Praktisch wäre es auch die Preise und Mengen in den jeweiligen Tabellenblätter zu summieren, damit man sofort einen Überblick hat.
Zu guter Letzt, müsste man die Endpreise und die Endmengen in ein seperates Tabellenblatt (Gesamtergebnis) aufführen und summieren um ein Gesamtbetrag und eine Gesamtmenge zu erhalten.
Bin ja mal gespannt ob das jemand hinbekommt..
Danke schon mal im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 213974
Url: https://administrator.de/forum/excel-makro-tabellen-vergleichen-und-werte-vervollstaendigen-213974.html
Ausgedruckt am: 15.05.2025 um 14:05 Uhr
11 Kommentare
Neuester Kommentar
Hallo,
Sicher?

Gruß,
Peter
Sicher?
Bin ja mal gespannt ob das jemand hinbekommt.. 
Ist das jetzt eine Prüfungsfrage an uns um dir zu beweisen wer was in Excel und VBA drauf hat odre soll das ein Wettbewerb unter deinen Sklaven sein? Wir sind weder deine Hibis noch dein Mitarbeiter/Angestellte oder so. Wir nehmen unser Wissen und unsere Freizeit dazu um leuten wie dir zu Helfen, nicht um Auftrgäge für lau durchzuführen. Du hast ja noch nicht einmal ein Anrsatz deines Geforderten VBA Codes hier rein gestellt wo wir dir bei Probleme gerne behilflich sein können. Sicher das dein Smily deinen Satz kompensiert?Danke schon mal im Voraus!
Und dieses ewige im Voraus. Zahlst du bei Aldi und Co. auch immer im Voraus?Gruß,
Peter
Hallo ooLADYLUCKoo. Willkommen im Forum.
da hast du "LUCK" das Sonntag ist ... und meine Finger nach VBA lechzen =8-)
Öffne den VBA Editor(ALT-F11) in deinem Sheet test.xls und füge Ihn im Abschnitt "Diese Arbeitsmappe" ein.
Dann musst du noch den Pfad zur vorlage.xls in Zeile 5 des Codes an deine Umgebung anpassen. Dann Cursor in der Prozedur platzieren und F5 drücken.
Als Übungsaufgabe habe ich dir noch die Summierung gelassen, damit du noch was zu tun hast ... und du damit hoffentlich etwas Excel-VBA lernst

Grüße Uwe
da hast du "LUCK" das Sonntag ist ... und meine Finger nach VBA lechzen =8-)
Öffne den VBA Editor(ALT-F11) in deinem Sheet test.xls und füge Ihn im Abschnitt "Diese Arbeitsmappe" ein.
Dann musst du noch den Pfad zur vorlage.xls in Zeile 5 des Codes an deine Umgebung anpassen. Dann Cursor in der Prozedur platzieren und F5 drücken.
Sub vergleicheArtikel()
Dim sourceSheet As Worksheet, targetSheet As Worksheet, targetWorkbook As Workbook
Dim sCell As Range, tCell As Range
Set sourceSheet = Worksheets(1)
Set targetWorkbook = Application.Workbooks.Open("D:\vorlage.xls")
Set sCell = sourceSheet.Range("A2")
For i = 1 To 10 'Loop Target Worksheets 1-10
Set targetSheet = targetWorkbook.Worksheets(i)
Set tCell = targetSheet.Range("A2")
Set outputCell = targetSheet.Range("A30")
While sCell.Value <> "" 'Loop Source Artikelnummern
art_nr_source = sCell.Value & sCell.Offset(0, 1).Value & sCell.Offset(0, 2).Value & sCell.Offset(0, 3).Value
For y = 2 To 29 'Loop through row 2 to 29
art_nr_target = tCell.Value & tCell.Offset(0, 1).Value & tCell.Offset(0, 2).Value & tCell.Offset(0, 3).Value
If art_nr_source = art_nr_target Then 'When art_nr matching copy source columns to target
sourceValues = Range(sCell, sCell.Offset(0, 9)).Value
Range(outputCell, outputCell.Offset(0, 9)).Value = sourceValues
Set outputCell = outputCell.Offset(1, 0)
End If
Set tCell = tCell.Offset(1, 0)
Next
Set tCell = targetSheet.Range("A2")
Set sCell = sCell.Offset(1, 0)
Wend
Set sCell = sourceSheet.Range("A2")
Next
End Sub
Grüße Uwe
versuchs mal mit
usw.
wenn du nur Range() verwendest nimmt Excel immer das gerade angezeigte Sheet, d.h bei deiner Version werden die selben Zellen 10 mal überschrieben.
Die Variable targetSheet wird immer auf das zu bearbeitende Sheet gesetzt, und wenn du das als Quelle für die Range Funktion nimmst landen die Summen auch auf den jeweiligen Tabellenblättern.
Schönen Abend noch !
Uwe
targetSheet.Range("I23").Value = ...
wenn du nur Range() verwendest nimmt Excel immer das gerade angezeigte Sheet, d.h bei deiner Version werden die selben Zellen 10 mal überschrieben.
Die Variable targetSheet wird immer auf das zu bearbeitende Sheet gesetzt, und wenn du das als Quelle für die Range Funktion nimmst landen die Summen auch auf den jeweiligen Tabellenblättern.
Schönen Abend noch !
Uwe
Sub vergleicheArtikel()
Dim sourceSheet As Worksheet, targetSheet As Worksheet, targetWorkbook As Workbook
Dim sCell As Range, tCell As Range, outputCell As Range
Set sourceSheet = Worksheets(1)
Set targetWorkbook = Application.Workbooks.Open("E:\vorlage.xlsm")
Set sCell = sourceSheet.Range("A2")
For i = 1 To 10 'Loop Target Worksheets 1-10
Set targetSheet = targetWorkbook.Worksheets(i)
Set tCell = targetSheet.Range("A2")
Set outputCell = targetSheet.Range("A30")
While sCell.Value <> "" 'Loop Source Artikelnummern
art_nr_source = sCell.Value & sCell.Offset(0, 1).Value & sCell.Offset(0, 2).Value & sCell.Offset(0, 3).Value
For y = 2 To 29 'Loop through row 2 to 29
art_nr_target = tCell.Value & tCell.Offset(0, 1).Value & tCell.Offset(0, 2).Value & tCell.Offset(0, 3).Value
If art_nr_source = art_nr_target Then 'When art_nr matching copy source columns to target
sourceValues = Range(sCell, sCell.Offset(0, 9)).Value
Range(outputCell, outputCell.Offset(0, 9)).Value = sourceValues
Set outputCell = outputCell.Offset(1, 0)
End If
Set tCell = tCell.Offset(1, 0)
Next
Set tCell = targetSheet.Range("A2")
Set sCell = sCell.Offset(1, 0)
Wend
Set sCell = sourceSheet.Range("A2")
outputCell.Offset(0, 5).Value = "Summen:"
outputCell.Offset(0, 6).Formula = "=Sum(G2:" & outputCell.Offset(-1, 6).Address & ")"
outputCell.Offset(0, 7).Formula = "=Sum(H2:" & outputCell.Offset(-1, 7).Address & ")"
Next
End Sub
[OT]
... also, Bussl hin oder her... ich finde irgendwie Aufwand und Absaugen ein Bissl ungleich verteilt in diesem Beitrag.
Was wäre denn deine Vermutung, Lady, an welcher Stelle in dem Schnipsel du von
Und wieso fallen dir nach jeder schon mundgerechten Lösung noch zwei Zusatzschmankerl ein?
Ich lass mal ein "gefällt mir nich'" hier.
Grüße
Biber
[/OT]
... also, Bussl hin oder her... ich finde irgendwie Aufwand und Absaugen ein Bissl ungleich verteilt in diesem Beitrag.
Was wäre denn deine Vermutung, Lady, an welcher Stelle in dem Schnipsel du von
If art_nr_source = art_nr_target
auf mehrere Felder erweitern könntest?Und wieso fallen dir nach jeder schon mundgerechten Lösung noch zwei Zusatzschmankerl ein?
Ich lass mal ein "gefällt mir nich'" hier.
Grüße
Biber
[/OT]
Zitat von @ooLADYLUCKoo:
Wie lautet denn der Code wenn ich mehrere Zellen vergleichen möchte? Beispiel anstatt A-D, A-E?
Schau die mal die folgenden Zeilen anWie lautet denn der Code wenn ich mehrere Zellen vergleichen möchte? Beispiel anstatt A-D, A-E?
art_nr_source = sCell.Value & sCell.Offset(0, 1).Value & sCell.Offset(0, 2).Value & sCell.Offset(0, 3).Value & [DER PREIS IST HEISS 1]
art_nr_target = tCell.Value & tCell.Offset(0, 1).Value & tCell.Offset(0, 2).Value & tCell.Offset(0, 3).Value & [DER PREIS IST HEISS 2]
Preisfrage: Was passt auf [DER PREIS IST HEISS 1 UND 2]
Ist es
- TOR 1: Ernie und Bert ?
- TOR 2: Schneeflitchen und die sieben Zwerge ?
- TOR 3: sCell.Offset(0,4). Value bzw. tCell.Offset(0,4).Value ?
dann kommst du bestimmt drauf.
Bussl
bussl mit Zunge bis zum Zäpfchen ;-pSorry der musste jetzt raus ...
Abschliessend den Beitrag noch als gelöst markieren. Merci.