die 16 Sekundens sollte man auch noch wegbekommen, wenn du Sortieren + SVerweis statt ZählenWenn einsetzt
wie groß sind denn die Listen im Original?
Wenn du die Quelldateien nicht verändern willst, kannst du dir ja auch die Spalte Charge irgendwo hin kopieren und dort sortieren und dann damit arbeiten.
kann man ja hinterher alles wieder löschen.
und wie schon gesagt, das Lösungsprinzip ist eigentlich das, was man anwendet, wenn man diese Aufgabe erledigen will und kein VBA zur Verfügung hat.
für jemanden, der ein paar erweiterte Excelkenntnisse hat, sollte es kein Problem sein das zu verstehen.
noch ein Tipp
da beide Codes für die beiden Blätter fast gleich sind und sich nur an zwei Stellen unterscheiden (Blattname und Spaltennummer der Charge), kann man den Code auch in einer Schleife durchführen lassen, mit diesen beiden Punkten als Variable.
und auch die Spaltennummer für die Formel kann man sich vom Makro ermitteln lassen, das ist sinnvoll, falls in der Quelldatei nochmal Spalten hinzukommen oder wegfallen können (sollte eigentlich nicht sein, aber wer weiß das schon)
Code:
Sub test1()
Dim sh
Dim sp_X As Long
Dim sp_AV As Long
sp_AV = Application.Match("CHARGE", Sheets("AV_Ware").Rows(1), 0)
For Each sh In Array("Fertiggestellte_Mengen_Chemie", "Lieferscheine_mit_Chargennummer")
With Sheets(sh).UsedRange
sp_X = Application.Match("CHARGE", .Rows(1), 0)
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=IF(CountIfs('AV_Ware'!C" & sp_AV & ",RC" & sp_X & "),0,Row())"
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .Column, xlNo
.ClearContents
End With
End With
Next
End Sub
Gruß Daniel