Encontrar la dirección del valor más bajo en un rango (Microsoft Excel)
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]
.