VBA, найти значение MIN, выделить строку на основе этого значения - PullRequest
0 голосов
/ 07 января 2019

У меня есть диапазон значений, я хочу найти MIN, а затем выделить строку этого значения Min.

Sub worstcase()


Set Rng = .Range("H44:H54")
worstcase = Application.WorksheetFunction.Min(Rng)
Debug.Print worstcase

Как я могу выделить строки на основе переменной худшего регистра? У меня есть статический диапазон, и я нашел минимальное значение, но теперь мне нужно выделить строку переменной наихудшего регистра.

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Выделите строку с найденными критериями

Код выделяет каждую строку, где был найден минимум. Используйте Exit For, чтобы выделить только первый найденный.

Код

Sub worstcase()

    Dim worstcase As Double ' Long for whole numbers.
    Dim rng As Range
    Dim cell As Range

    With Worksheets("Sheet1")
        Set rng = .Range("H44:H54")
        worstcase = Application.WorksheetFunction.Min(rng)
        Debug.Print worstcase

        For Each cell In rng
            If cell.Value = worstcase Then
                cell.EntireRow.Interior.ColorIndex = 3 ' Hightlight whole row.
                'cell.Interior.ColorIndex = 5 ' Hightlight only cell.
                'Exit For ' To highlight only the first found row.
            End If
        Next

    End With

End Sub

EDIT:

Sub worstcase()

    Const cFirst As Variant = "H"
    Const cLast As Variant = "Q"

    Dim worstcase As Double ' Long for whole numbers.
    Dim rng As Range
    Dim cell As Range

    With Worksheets("Sheet1")
        Set rng = .Range("H44:H54")
        worstcase = Application.WorksheetFunction.Min(rng)
        Debug.Print worstcase

        For Each cell In rng
            If cell.Value = worstcase Then
                .Range(.Cells(cell.Row, cFirst), .Cells(cell.Row, cLast)) _
                    .Interior.ColorIndex = 3 ' Hightlight cells.
                'Exit For ' To highlight only the first found cells.
            End If
        Next

    End With

End Sub
0 голосов
/ 07 января 2019

Создание правила условного форматирования на основе следующей формулы.

=$H44=min($H$44:$H$54)

Этот VBA создаст CFR для строк 44: 54.

With worksheets("sheet1").range("44:54")
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$H44=min($H$44:$H$54)"
    .FormatConditions(.FormatConditions.Count).Interior.Color = vbred
End With
0 голосов
/ 07 января 2019

Вы могли бы сделать это таким образом.

Не сработает, если у вас повторный минимум.

Также вы можете использовать условное форматирование и избегать VBA.

Sub worstcase()

Dim Rng As Range, worstcase, i As Long

Set Rng = Range("H44:H54")

With Rng
    worstcase = Application.WorksheetFunction.Min(.Cells)
    i = Application.Match(worstcase, .Cells, 0)
    .Cells(i).EntireRow.Interior.Color = vbRed
End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...