J'ai une plage de valeurs, je veux trouver le MIN, puis mettre en surbrillance la ligne de cette valeur Min.
Sub worstcase()
Set Rng = .Range("H44:H54")
worstcase = Application.WorksheetFunction.Min(Rng)
Debug.Print worstcase
Comment puis-je mettre en évidence des lignes en fonction du pire des cas? J'ai ma plage statique et je trouve la valeur minimale, mais maintenant je dois mettre en évidence la ligne de la variable la plus défavorable.
3 Réponses :
Vous pouvez le faire ainsi.
Cela ne fonctionnera pas si vous avez un minimum répété.
Vous pouvez également utiliser le formatage conditionnel et éviter 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
Merci! et si je ne veux pas faire une ligne entière, disons que je veux mettre en évidence une plage basée sur le min, disons H Min à Q Min?
Mettez à jour la plage. .Range (.Cells (i, 8), .Cells (i, 17)). Interior.Color = vbRed
Le code met en évidence chaque ligne où le minimum a été trouvé. Utilisez Exit For pour mettre en surbrillance uniquement le premier trouvé.
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
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
h1>
Avez-vous une option de plage spécifiée en surbrillance? ie En utilisant toujours uniquement la valeur min, au lieu de entirerow, mettez en surbrillance H à Q?
Créez une règle de mise en forme conditionnelle basée sur la formule suivante.
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
Ce VBA créera un CFR pour les lignes 44:54.
=$H44=min($H$44:$H$54)