[Excel, VBA] Kleinste - Größte

Gepostet am: Jun 24, 2012 1:23:0 PM

Einführung (min,max,KKleinste,KGrösste)

Grundsätzlich ist es in Excel sehr einfach den größten bzw. kleinsten Wert einer Werteliste zu ermitteln. Dafür gibt es die Funktionen min, max, KKleinste, KGrösste

Die VBA-Pendants dazu sind:

Erweiterung (MaxA,MinA)

MaxA, MinA berücksichtigt darüberhinaus auch noch Wahrheitswerte (WAHR = 1, FALSCH = 0). Die restliche Anwendung ist gleich.

Beispiel:

siehe auch: hier

Bis daher sind das die Standardfunktionen, die eigentlich eh jeder kennt, der mit Excel schon gearbeitet hat. 

Minimum/Maximum ohne Null

In obigen Beispiel mit dem Energieverbrauch sieht man schon ein Problem: Sofern Nullen in der Ausgangsliste vorhanden sind, und keine negativen Werte vorhanden sind, ist 0 immer der Minimalwert. Das kann man Excel natürlich auch, wenngleich die Formel dann etwas komplizierter wird.

Die Funktion Min_ohNull ist die VBA-Umsetzung des Problems:

Min_ohNull

Public Function Min_ohNull(Bereich As Range) As Double     Min_ohNull = WorksheetFunction.Small(Bereich, WorksheetFunction.CountIf(Bereich, 0) + 1)End Function

Größer/Kleiner als ein bestimmter Wert

Die Überlegungen von Möglichkeit 2 kann man auch dazu verwenden, den kleinsten Wert einer Liste, der größer ist als ein bestimmter Wert zu ermitteln. Selbiges gilt auch für den größten Wert einer Liste, der kleiner ist als ein bestimmter Wert.

VBA-Umsetzung

Public Function Kleinste_groesser_als(Bereich As Range, groesser_als As Double) As Double     Kleinste_groesser_als = WorksheetFunction.Small(Bereich, WorksheetFunction.CountIf(Bereich, "<=" & groesser_als) + 1)End FunctionPublic Function Groesste_kleiner_als(Bereich As Range, kleiner_als As Double) As Double     Groesste_kleiner_als = WorksheetFunction.Large(Bereich, WorksheetFunction.CountIf(Bereich, ">=" & kleiner_als) + 1)End Function

Minimum oder Maximum ohne Berücksichtigung von Vorzeichen

Einen weiteren Punkt gibt es noch, der vielleicht von Interesse sein kann. Minimum oder Maximum ohne Berücksichtigung von Vorzeichen.