Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
352to356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
352to356
352to356
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formel für bestes Drittel

Formel für bestes Drittel
17.12.2003 10:29:32
Andrea
Kennt jemand eine Formel, mit der ich direkt den Durchschnitt des besten Drittels einer Tabelle berechnen kann ohne dass ich zuerst den Rang des Wertes bestimmen muss? Das Problem besteht darin, dass die Datenmenge ändern kann.

Bsp. ich habe folgende Zahlen und möchte den Durchschnitt des besten Drittels:
755'409'000
570'022'000
621'522'000
597'244'000
575'942'000
570'866'000
563'497'000
563'242'000
671'665'000
602'302'000

Vielen Dank im voraus für eure Antwort.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel für bestes Drittel
17.12.2003 11:20:00
Mac4
Hallo Andrea,

bi mir jetzt nicht sicher, ob es das ist, aber ein Versuch ist es wert!

{=MITTELWERT(WENN(A1:A100<>"";WENN(RANG(A1:A100;A1:A100)<=ANZAHL(A1:A100)/3;A1:A100)))}

Beachte bitte die Matrixklammern!

Marc
AW: Formel für bestes Drittel
17.12.2003 11:33:59
Nayus
Hi,
mein Ansatz wäre folgende UDF (getestet)
Verwendung:
Beispiel:
In B2:B11 stehen Deine Werte
=GetMaxThird(B2:B11)


Function GetMaxThird(pr_val As Range) As Double
Dim r As Range
Dim anz As Integer
Dim l_ret As Double, l_buff As Double
Dim Score(3)
Application.Volatile
anz = Round(pr_val.Count, 0)
If anz < 3 Then
' Nichts zurückgeben, wenn der Zellbereich weniger als 3 Zellen umfasst
l_ret = Null
Else
'Rangliste erstellen
For Each r In pr_val
If IsNull(Score(0)) Then
Score(0) = r.Value
Else
If r.Value > Score(0) Then
'vorherigen Wert im Rang veringern
Score(1) = Score(0)
Score(0) = r.Value
Else
If IsNull(Score(1)) Then
Score(1) = r.Value
Else
If r.Value > Score(1) Then
'vorherigen Wert im Rang veringern
Score(2) = Score(1)
Score(1) = r.Value
Else
If IsNull(Score(2)) Then
Score(2) = r.Value
Else
If r.Value > Score(2) Then
Score(2) = r.Value
End If
End If
End If
End If
End If
End If
Next r
For i = 0 To UBound(Score)
'Summe der Top3-Werte
l_buff = l_buff + Score(i)
Next i
'Mittelwert der Top3-Werte
l_ret = Round(l_buff / 3, 0)
End If
GetMaxThird = l_ret
End Function


Viel Erfolg,
Nayus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige