Страницы: 1
RSS
Простейший макрос условного форматирования
 

Имеется всегда одинаковая таблица, первая строка даты.
Начиная со второй строки идет полезная инфа. Алгоритм действий:
Выделяю строку полностью, условное форматирование, цветовые шкалы, цветовая шкала "Зеленый-желтый-красный"
Следом на ту же строку выполняю, условное форматирование, наборы значков, индикаторы "3 символа в кружках"

Пытаясь автоматизировать это действие, записал макрос, но для его адекватного исполнению, нужно проделать эту процедуру на 70 000 строках (
Можно ли как-то указать макросу: парень повтори условное форматирование как на первой строке, со всеми непустыми строчками?

На одном из форумов ответили: можно в цикл загнать:
Код
For i = 1 to 100
Range(cells(i,1), cells(i, 10)).Selection
'...код из макрорекордера
next i

Но вот что такое в цикл загнать и с чем его едят, совершенно непонятно(
Подскажите пожалуйста как все таки решить задачу?
 
 
Цитата
viverov написал: записал макрос ... нужно проделать эту процедуру на 70 000 строках
Проделал то-же самое и загнал в цикл. Проверьте в "бою"
Код
For I = 2 To 70000
    Range("B" & I & ":Q" & I).Select    ' Вместо B и Q впишите наименования нужных столбцов
    Selection.FormatConditions.AddColorScale ColorScaleType:=3
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
        xlConditionValueLowestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
        .Color = 8109667
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
        xlConditionValuePercentile
    Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
    With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
        .Color = 8711167
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
        xlConditionValueHighestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
        .Color = 7039480
        .TintAndShade = 0
    End With
    Selection.FormatConditions.AddIconSetCondition
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1)
        .ReverseOrder = False
        .ShowIconOnly = False
        .IconSet = ActiveWorkbook.IconSets(xl3Symbols)
    End With
    With Selection.FormatConditions(1).IconCriteria(2)
        .Type = xlConditionValuePercent
        .Value = 33
        .Operator = 7
    End With
    With Selection.FormatConditions(1).IconCriteria(3)
        .Type = xlConditionValuePercent
        .Value = 67
        .Operator = 7
    End With
    Range("A1").Select
Next
Изменено: Sanja - 10.05.2015 11:19:43
Согласие есть продукт при полном непротивлении сторон
 
Цитата
viverov написал: эту процедуру на 70 000 строках
чет мне кажется Диспетчер УФ столько условий не примет.
 
Sanja,Проверил, все работает, но машина лагает ужас как. 1000 строк обошла минуты за полторы.
Визуально = как времена диалапа) Грузит линиями. Линия/белый экран, линия/белый экран и т.д.
UPD. Завис excel на 2500+ строке.
 
V,Как быть то? 70к строк ведь никуда не денутся.  
 
На одном из форумов ответили, итоговое решение съедает по 2к строк за минуту и не виснет. Вдруг кому еще нужно будет, прикладываю код.
Код
Sub FormatConditionsByRows()
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .DisplayStatusBar = False
        .DisplayAlerts = False
    End With
    ActiveSheet.DisplayPageBreaks = False
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To 2000
    Range(Cells(i, 2), Cells(i, 36)).Select
        Selection.FormatConditions.AddColorScale ColorScaleType:=3
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
            xlConditionValueLowestValue
        With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
            .Color = 7039480
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
            xlConditionValuePercentile
        Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
        With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
            .Color = 8711167
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
            xlConditionValueHighestValue
        With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
            .Color = 8109667
            .TintAndShade = 0
        End With
        Selection.FormatConditions.AddIconSetCondition
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1)
            .ReverseOrder = False
            .ShowIconOnly = False
            .IconSet = ActiveWorkbook.IconSets(xl3Symbols)
        End With
        With Selection.FormatConditions(1).IconCriteria(2)
            .Type = xlConditionValuePercent
            .Value = 33
            .Operator = 7
        End With
        With Selection.FormatConditions(1).IconCriteria(3)
            .Type = xlConditionValuePercent
            .Value = 67
            .Operator = 7
        End With
    Next i
    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .DisplayStatusBar = True
        .DisplayAlerts = True
    End With
    'ActiveSheet.DisplayPageBreaks = True
End Sub

 
Sanja, Спасибо что прониклись проблемой, потратили время и предложили решение!
Страницы: 1
Наверх