Problema con buscar el valor mínimo de un rango que no sea 0

Necesito un código que me encuentre dentro de un rango, por ejemplo de "A1:A10" el valor mínimo siempre y cuando sea mayor de 0.

Se buscar el valor mínimo, pero con esta condición no logro averiguarlo.

Respuesta
2

Prueba con esta macro, cuenta los valores mayores a 0 y luego busca el valor mínimo descartando los 0

Sub busca_minimo()
Set datos = Range("a1:a10")
With datos
    cuenta = WorksheetFunction.CountIf(datos, 0)
    minimo = WorksheetFunction.Small(datos, cuenta + 1)
    Range("c1") = minimo
End With
Set datos = Nothing
End Sub

1 respuesta más de otro experto

Respuesta
1

¿Y tiene que ser con VBA? Porque parece que se puede hacer con una fórmula:

=K.ESIMO.MENOR(SI(A1:A10=0;MAX(A1:A10)+1;A1:A10);1)

¡Gracias! Pero quiero que sea con código porque en la hoja hay una macro que incrementa las filas y hace otros cálculos. Necesito que esta celda también tenga código como el resto y no tenga que copiar la fórmula si añado filas.

Gracias de todos modos.

Esa misma fórmula se puede utilizar en VBA mediante su método Evaluate. Por ejemplo:

Sub prueba()
    MsgBox Evaluate("=SMALL(IF(A1:A10=0,MAX(A1:A10)+1,A1:A10),1)")
End Sub

Aunque si hubiera que modificar las direcciones la cosa se complicaría un poco, porque habría que andar concatenando. Por ejemplo:

Sub prueba2()
    Dim r As Range
    Set r = Range("A1:A10")
    MsgBox Evaluate("=SMALL(IF(" & r.Address & "=0,MAX(" & r.Address & ")+1," & r.Address & "),1)")
End Sub

Saludos_

¡Gracias! 

jrgces , muchas gracias. Evaluate me parece complejo, tendré que leer más, tengo mucho que aprender.

Un abrazo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas