Wenn Sie streng nach einem Ansatz suchen, der auf einer Arbeitsblattfunktion basiert, ist dies möglicherweise nicht die empfohlene Lösung. Hier habe ich jedoch eine kleine UDF (User Defined Function) verwendet, um die Aufgabe zu vereinfachen.
Diese UDF nimmt einen Bereich auf und gibt ein Array von Max jeder Spalte in diesem Bereich zurück.
Drücken Sie ALT+ F11, um den VBA-Editor aufzurufen. Fügen Sie im Menü Einfügen ein Modul ein. Fügen Sie nun den folgenden Code ein.
Function Ret_Arr(inpt As Range) As Variant Dim v As Variant ReDim v(1 To inpt.Columns.Count) For i = 1 To inpt.Columns.Count v(i) = Application.Max(inpt.Columns(i)) Next i Ret_Arr = v End Function
Beachten Sie, dass in diesem Basiscode nicht viele Überprüfungen enthalten sind, um ihn für alle Fälle robust zu machen.
Dies übernimmt Range und gibt ein Array von Max aus jeder Spalte zurück, das Sie in Ihrer Arrayformel verwenden können.
Speichern Sie den VBA-Code und das Arbeitsblatt als XLSM-Makro-aktiviertes Arbeitsblatt, falls Sie Excel 2007 oder höher verwenden.
In diesem Beispiel befinden sich Beispieldaten in Zellen A1: D8. Geben Sie in E2 die folgende Formel ein und drücken Sie CTRL+ SHIFT+ ENTERinnerhalb der Formelleiste, um eine Array-Formel zu erstellen.
Die Formel wird in geschweifte Klammern eingeschlossen, um anzuzeigen, dass es sich um eine Array-Formel handelt
=SUM(IF($A2:$D2>=Ret_Arr($A$1:D1),1,0))
Nun soll für jeden Bereich über dem Ret_Arr das Array von Max jeder Spalte zurückgegeben werden. Wenn Sie den korrekten Bereich nicht an Ret_Arr übergeben, erhalten Sie möglicherweise fehlerhafte Ergebnisse. Wenn Ihre fraglichen Spalten also A bis D sind, müssen Sie den gleichen Bereich der Spalten A bis D an die UDF übergeben.