Get the lowest values greater than zero
05:49 08 Oct 2016

I have the above code, that finds the five max values from a column. I need to do the same but for the minimum values higher then zero. I need this to be in VBA because the user can change the values after in the worksheet.

I had already changed max for min, but get errors.

Sub best()

Dim maxvalue As Long
Dim copyrow As Long

copyrow = 30
Dim prevval As Long
Dim prevrow As Long
Dim i As Long
Dim fndrow As Long

prevval = 0
prevrow = 0

For i = 1 To 5

    maxvalue = WorksheetFunction.Large(Sheets("Resumo").Range("J11:J47"), i)
    If maxvalue <> prevval Then
        fndrow = Sheets("Resumo").Range("J11:J47").Find(What:=maxvalue, LookIn:=xlValues, lookat:=xlWhole).Row
    Else
        fndrow = Sheets("Resumo").Range("J" & prevrow & ":J47").Find(What:=maxvalue, LookIn:=xlValues, lookat:=xlWhole).Row
    End If
    
    Dim vendor As String
    
    vendor = Sheets("Resumo").Range("G" & CStr(fndrow))
    
    Sheets("os melhores").Range("F" & CStr(copyrow)) = maxvalue
    If InStr(vendor, " ") <> 0 Then
        Sheets("os melhores").Range("G" & CStr(copyrow)) = Left(vendor, InStr(vendor, " "))
        Sheets("os melhores").Range("H" & CStr(copyrow)) = Right(vendor, InStr(vendor, " "))
    Else
        Sheets("os melhores").Range("G" & CStr(copyrow)) = Sheets("Resumo").Range("G" & CStr(fndrow))
    End If
    
    prevval = maxvalue
    prevrow = fndrow
    
    copyrow = copyrow + 1
Next i

End Sub

File

In fndrow = Sheets("Resumo").Range("J" & prevrow & ":J47").Find(What:=MinValue, LookIn:=xlValues, lookat:=xlWhole).Row I am getting this error:

Run time error 1004 Application-defined or object-defined error

vba excel