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.