I am using Excel-2010, I have applied 3scale conditional formatting for Excel range A1:F100, on a Dropdown macro hide/unhide will be actioned, and hide/unhide is not sequential,
There is a possibility with SUBTOTAL formulas for Minimum, Midpoint and Maximum.
Minimum: Type = Formula, =SUBTOTAL(105,$A$1:$F$100)
Midpoint: Type = Formula, =MEDIAN(IF((SUBTOTAL(103,INDIRECT("A"&ROW($1:$100)))>0)*($A$1:$F$100<>""),$A$1:$F$100))
Maximum: Type = Formula, =SUBTOTAL(104,$A$1:$F$100)
If you could accept the average of the values instead the 50% percentile as the Midpoint, the formula for Midpoint would be simpler:
=SUBTOTAL(101,$A$1:$F$100)
Greetings
Axel
As commented, it should be something like this:
Sub ject()
Dim rng As Range
With Sheet1 '~~> change to your actual sheet
.Range("A1:F100").FormatConditions.Delete
Set rng = .Range("A1:F100").SpecialCells(xlCellTypeVisible)
.Range("A1").FormatConditions.AddColorScale 3
With .Range("A1").FormatConditions(1)
With .ColorScaleCriteria(1)
.Type = xlConditionValueLowestValue
.FormatColor.Color = RGB(255, 0, 0)
End With
With .ColorScaleCriteria(2)
.Type = xlConditionValuePercentile
.FormatColor.Color = RGB(255, 255, 0)
End With
With .ColorScaleCriteria(3)
.Type = xlConditionValueHighestValue
.FormatColor.Color = RGB(0, 255, 0)
End With
.ModifyAppliesToRange rng
End With
End With
End Sub
Everytime this routine is run or called, it re-applies formatting to visible ranges.
It can be incorporated to an existing code or run separately. HTH.