Wenn Sie ein Makro schreiben, können Sie den niedrigsten Wert in einem Zellbereich ermitteln, indem Sie die MIN-Arbeitsblattfunktion mithilfe der WorksheetFunction-Methode anwenden. Möglicherweise müssen Sie jedoch nicht nur den niedrigsten Wert im Bereich finden, sondern auch die Adresse der ersten Zelle, die diesen Wert enthält.

Eine einfache Möglichkeit besteht darin, einfach den Bereich zu durchlaufen, den Sie untersuchen möchten, und sowohl den niedrigsten Wert als auch die Adresse der zu untersuchenden Zelle wie folgt abzuleiten:

Function FindLowestAddr(pRng As Range) As String     Dim MinVal As Double     Dim MinAddr As String     Dim c As Range

MinVal = pRng.Cells(1).Value     MinAddr = pRng.Cells(1).Address     For Each c in pRng         If c.Value < MinVal Then             MinVal = c.Value             MinAddr = c.Address         End If     Next c     FindLowestAddr = MinAddr End Function

Beachten Sie, dass dieser Ansatz überhaupt nicht von der MIN-Arbeitsblattfunktion abhängt. Es hat jedoch einen Nachteil: Es unterscheidet nicht zwischen Zellen, die numerische Werte enthalten, und solchen, die dies nicht tun. Mit anderen Worten, wenn der an die Funktion übergebene Bereich eine leere Zelle enthält, wird davon ausgegangen, dass diese Zelle einen Nullwert enthält, der sehr wohl der niedrigste Wert im Bereich sein kann.

Eine Möglichkeit, dies zu umgehen, besteht darin, sich auf Arbeitsblattfunktionen innerhalb des Makros zu verlassen. Das folgende Makro verwendet sowohl die MIN- als auch die MATCH-Arbeitsblattfunktionen, um die Position des Minimalwerts und dann den Index (Offset) dieser Zelle innerhalb des Bereichs zu bestimmen.

Function GetAddr(rng As Range) As String     Dim dMin As Double     Dim lIndex As Long     Dim sAddress As String

With Application.WorksheetFunction         dMin = .Min(rng)

lIndex = .Match(dMin, rng, 0)

End With     GetAddr = rng.Cells(lIndex).Address End Function

Es sollte beachtet werden, dass Sie das Makro vollständig mithilfe einer Arbeitsblattformel entfernen können, wenn Sie das Makro nur zum Ermitteln der Adresse verwenden, weil Sie angenommen haben, dass es ohne das Makro keine Möglichkeit gibt, die gewünschten Informationen abzuleiten. Wenn Sie beispielsweise die Adresse der Zelle mit dem niedrigsten Wert im benannten Bereich MyRange ermitteln möchten, können Sie Folgendes verwenden:

=ADDRESS(ROW(MyRange)+MATCH(MIN(MyRange),MyRange,0)-1,COLUMN(MyRange))

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (12744) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: