Anzeige
Archiv - Navigation
1884to1888
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

Listenabgleich

Listenabgleich
20.06.2022 13:41:07
Christian
Hallo zusammen,
ich soll jede Woche zwei Listen vergleichen, beide Listen sind in einer Datei:
Liste 1 spiegelt den aktuellen Bestand wieder, in Spalte AH ist eine eindeutige Zahl, welche in Liste 2 in Spalte A ebenso steht.
Da der Abgleich sehr aufwendig ist, war mein Gedanke, dies per Makro zu aktualisieren und zwar mit den folgenden Bedingungen:
wenn Daten in "Liste 2", aber nicht in "Liste 1", dann Daten dorthin kopieren --> Liste 2 Spalte B-V nach Liste 1 in Spalte L-AG
wenn Daten in "Liste 1", aber nicht in "Liste 2", dann auf "geliefert" setzen in Liste 1/Spalte A
wenn Daten in "Liste 1" und in "Liste 2", dann die jeweilige Zeile in "Liste 1" mit den Daten aus "Liste 2" überschreiben --> Liste 2 Spalte B-V nach Liste 1 in Spalte L-AG
Ich wäre sehr dankbar, wenn mir hier jemand helfen könnte.
Vielen Dank schon mal.
Viele Grüße
Christian

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: (D)eine Beispieltabelle wäre hilfreich...
20.06.2022 14:52:27
JoWE
AW: Listenabgleich
20.06.2022 14:56:26
Daniel
HI
mal als Ansatz zur Lösung
1. füge in Liste1 eine Hilfsspalte hinzu in welcher du per Formel überprüfst, ob und wo (in welcher Zeile) sich der Eintrag in Liste2 befindet
das ist die Formel: =Vergleich(AH1;Liste2!A:A;0)
du bekommst jetzt in für alle Zeilen, die auch in Liste2 vorkommen, die Zeilennummer und für alle, die nicht in Liste2 vorkommen, den #NV-Fehler
2. in die Zeilen, die in der Hilfsspalte eine Zahl haben, kannst du die Werte aus der Liste2 übernehmen, am einfachsten mit der Formel INDEX und der Zeilennummer aus der Hilfsspalte
in die Zeilen, die den Fehler haben, setzt du in Liste1 in Spalte A den Wert auf geliefert.
3. mach jetzt das gleiche Spiel in Liste2 (Hilfsspalte mit Vergleich).
4. kopiere jetzt die Werte, die in der Hilfsspalte einen Fehler haben, nach Liste1
könnte als Code in etwa so aussehen:

with Sheets("Liste1").Usedrange
with .Columns(35)  'Spalte AI sei Hilfsspalte
.FormulaLocal = "=Vergleich(AH1;Liste2!A:A;0)
Intersect(Sheets("Liste1").Range("L:AG"), .SpecialCells(xlcelltypeformulas, 1).EntireRow).FormularLocal = "=Index(Liste2!B:B;$AH1)"
Intersect(Sheets("Liste1").Range("A:A"), .SpecialCells(xlcelltypeformulas, 16).EntireRow).value = "geliefert"
Sheets("Liste1").Range("L:AG").Copy
Sheets("Liste1").Range("L1").PasteSpecial xlpastevalues
.ClearContents
end with
end with
With Sheets("Liste2").UsedRange
with .columns(23) 'Spalte W sei hilfsspalte
.FormulaLocal = "=Vergleich(A1;Liste1!AH:AH;0)"
Intersect(Sheets("Liste2").Range("B:V"), .SpecialCells(xlcelltypeformulas, 16).EntireRow).Copy Sheets("Liste1").Cells(Rows.Count, 12).end(xlup).Offset(1, 0)
.ClearContents
end With
End with
Achtung Code ist nicht getestet.
bitte Lesen, verstehen und dann lieber selber schreiben statt Copy-Pasten, damit vermeidest du meine Rechtschreibfehler.
das .SpecialCells entspricht der Menüfunktion START - BEARBEITEN - SUCHEN UND AUSWÄHLEN - INHALTE
der Wert 1 steht für Zahlen, der Wert 16 für Fehler.
falls deine Daten eine überschriftenzeile haben, müsstest du in beiden Fällen nach dem Einfügen der Formel diese aus der Zeile 1 wieder rauslöschen (das ist jetzt einfacher, als den Zellbereich anzupassen)

.FormulaLocal = ...
.Cells(1, 1).ClearContents
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige