hier würde ich das folgende Makro als UDF (user defined function) nutzen. Es wird in ein allgemeines Modul kopiert und kann dann wie jede Excelfunktion in einer Formel genutzt werden. Siehe Anlage.
Code:
Public Function GleicheStoffe(rngListe As Range, varEins As Variant, varZwei As Variant) As Long Dim lngZeile As Long Dim lngAnz As Long Dim varListe() As Variant Dim dict As Object Set dict = CreateObject("Scripting.Dictionary") varListe = rngListe.Value For lngZeile = 1 To UBound(varListe, 1) If varListe(lngZeile, 1) = varEins Then dict(varListe(lngZeile, 2)) = 1 End If Next lngZeile lngAnz = 0 For lngZeile = 1 To UBound(varListe, 1) If varListe(lngZeile, 1) = varZwei Then If dict.exists(varListe(lngZeile, 2)) Then lngAnz = lngAnz + 1 End If End If Next lngZeile GleicheStoffe = lngAnz Set dict = Nothing End Function
ps. Falls gleiche Kombinationen Produkt;Einsatzstoff mehrfach auftreten, müste eine Zeile ergänzt werden.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.