Alternativ könnte man auch die 14 (=KGRÖßTE) bei Aggregate nehmen, die Formel würde dasselbe in einer anderen Reihenfolge ausgeben.
Mit der 14 geht es wohl ziemlich sicher, weil jemand anders das mal in einem anderem Forum als Lösung geschrieben hatte.
Ich denke mein größtes Problem ist die richtige Schreibweise der Bedingungen.
Hier nochmal ein Beispiel wie jemand eine Variante mit der 14 geschrieben hatte bei einem anderen Problem.
Dim res As Long
Dim sh As Worksheet
Dim range1Address As String
Dim range2Address As String
Dim arrayFormula As String
Set sh = ThisWorkbook.Sheets("Database")
With sh
range1Address = .Range("B2:B2000").Address(RowAbsolute:=True, ColumnAbsolute:=True, ReferenceStyle:=xlA1, External:=True)
range2Address = .Range("C2:C2000").Address(RowAbsolute:=True, ColumnAbsolute:=True, ReferenceStyle:=xlA1, External:=True)
arrayFormula = "AGGREGATE(14,4,(" & range1Address & "=""" & FrmMaster.CmbProduct.Value & """)*" & range2Address & ",1)"
res = Evaluate(arrayFormula)
MsgBox res
End With
Ganzes Beispiel ist hier zu finden
https://stackoverflow.com/questions/61743884/aggregate-function-in-vba-excel
|