Al escribir una macro, puede encontrar el valor más bajo en un rango de celdas utilizando el método WorksheetFunction para aplicar la función de hoja de cálculo MIN. Sin embargo, es posible que necesite no solo encontrar el valor más bajo en el rango, sino también la dirección de la primera celda que contiene ese valor.

Una forma sencilla es simplemente recorrer el rango que desea examinar y derivar tanto el valor más bajo como la dirección de la celda que se está examinando, como se muestra a continuación:

Function FindLowestAddr(pRng As Range) As String     Application.Volatile     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

Tenga en cuenta que este enfoque no se basa en absoluto en la función de hoja de trabajo MIN. Sin embargo, tiene un inconveniente: no diferencia entre las celdas que contienen valores numéricos y las que no. En otras palabras, si el rango pasado a la función contiene una celda en blanco, se considera que esa celda contiene un valor cero, que muy bien puede ser el valor más bajo del rango.

Una forma de evitar esto es confiar en las funciones de la hoja de trabajo dentro de la macro. La siguiente macro utiliza las funciones de la hoja de cálculo MIN y MATCH para determinar la ubicación del valor mínimo y luego el índice (desplazamiento) de esa celda dentro del rango.

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

Application.Volatile     With Application.WorksheetFunction         dMin = .Min(rng)

lIndex = .Match(dMin, rng, 0)

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

Cabe señalar que si está utilizando la macro solo para descubrir la dirección porque pensó que no había forma de derivar la información deseada sin la macro, entonces puede eliminar la macro por completo utilizando una fórmula de hoja de trabajo. Por ejemplo, si desea determinar la dirección de la celda de menor valor en el rango con nombre MyRange, puede usar lo siguiente:

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

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (7140) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Finding_the_Address_of_the_Lowest_Value_in_a_Range [Encontrar la dirección del valor más bajo en un rango].