Форматировать первые 3 и последние 3 значения для каждой строки

Я думаю, что мне может понадобиться макрос VBA, чтобы решить эту проблему. У меня есть набор данных примерно из 10 000 строк с 15 столбцами значений, и я хочу для каждой строки выделить с помощью условного форматирования три верхних и три нижних значения.

Я установил правило с помощью инструмента условного форматирования в xl2010 для строки 1, но когда я копирую и вставляю специальные форматы в оставшиеся 9999 строк, в результате форматируются только три верхних и три нижних значения, которые содержатся в 9999 строк.

Я хочу, чтобы это затеняло верхние 3 и нижние 3 для каждой строки, а не весь набор данных, в идеале без специального копирования и вставки 9999 раз!


person Rossy48    schedule 11.09.2013    source источник


Ответы (1)


Функция записи макросов хороша для подобных задач, особенно для новичков (сам я не очень разбираюсь в VBA).

Это выделит верхние 3 значения красным, а нижние 3 синим. Примечание. У меня есть i от 1 до 1000, меняйте по мере необходимости (то же самое для раздела столбца).

РЕДАКТИРОВАТЬ: Изменено для ваших диапазонов, я не читал их в первый раз.

Sub Conditions()
Dim myrange As Range


For i = 1 To 10000

Set myrange = Range("A" & i & ":" & "O" & i)
myrange.FormatConditions.AddTop10
myrange.FormatConditions(myrange.FormatConditions.Count).SetFirstPriority

With myrange.FormatConditions(1)
    .TopBottom = xlTop10Top
    .Rank = 3
    .Percent = False
End With
With myrange.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 255
    .TintAndShade = 0
End With

myrange.FormatConditions(1).StopIfTrue = False
myrange.FormatConditions.AddTop10
myrange.FormatConditions(myrange.FormatConditions.Count).SetFirstPriority

With myrange.FormatConditions(1)
    .TopBottom = xlTop10Bottom
    .Rank = 3
    .Percent = False
End With
With myrange.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 15773696
    .TintAndShade = 0
End With

myrange.FormatConditions(1).StopIfTrue = False

Next

End Sub
person Joe Laviano    schedule 11.09.2013