Когда просто выделяешь диапазон значений и используешь Цветовые шкалы, то Excel выбирает из всего диапазона максимальное значение, закрашивает его тёмно-зеленым и уже далее светло-зел, желтый, красный. Но выглядит это все почти однотонно.
Мне нужно, чтобы форматирование применилось на каждую строку отдельно, но как сделать так, чтобы протянуть это форматирование на весь диапазон значений сразу, а не выбирать строки по одной и закрашивать их?
Добрый день!
Когда просто выделяешь диапазон значений и используешь Цветовые шкалы, то Excel выбирает из всего диапазона максимальное значение, закрашивает его тёмно-зеленым и уже далее светло-зел, желтый, красный. Но выглядит это все почти однотонно.
Мне нужно, чтобы форматирование применилось на каждую строку отдельно, но как сделать так, чтобы протянуть это форматирование на весь диапазон значений сразу, а не выбирать строки по одной и закрашивать их?nechehov
Когда-то давно также возникла такая проблема. Написал макрос - сейчас использую: [vba]
Код
Sub Цветовые_шкалы() Dim t As String Dim c As Long Dim ran As Range Dim ra As Range Dim col1() Dim col2() Dim col3()
col1 = Array(7039480, 8109667, 7039480, 8109667, 7039480, 8109667, 10285055, 7039480, 8109667, 7039480, 16776444, 13011546) col2 = Array(8711167, 8711167, 16776444, 16776444, 16776444, 10285055, 8109667, 16776444, 16776444, 16776444, 7039480, 16776444) col3 = Array(8109667, 7039480, 8109667, 7039480, 13011546, 0, 0, 0, 0, 0, 0, 7039480) Set ran = Selection t = InputBox("1 = построчно" & vbCr & "2 = по столбцам" & vbCr & "3= весь диапазон", "применить для", 1) If t = "" Then Exit Sub c = InputBox("Вариант расцветки", , 0) If t = "3" Then Call цветШкала(ran, col1(c) * 1, col2(c) * 1, col3(c) * 1): Exit Sub If t = "1" Then For Each ra In ran.Rows Call цветШкала(ra, col1(c) * 1, col2(c) * 1, col3(c) * 1) Next Exit Sub End If If t = "2" Then For Each ra In ran.Columns Call цветШкала(ra, col1(c) * 1, col2(c) * 1, col3(c) * 1) Next Exit Sub End If End Sub
Private Sub цветШкала(r As Range, col1#, col2#, col3#) With r .FormatConditions.AddColorScale ColorScaleType:=3 .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1) .ColorScaleCriteria(1).Type = xlConditionValueLowestValue .ColorScaleCriteria(1).FormatColor.Color = col1
Когда-то давно также возникла такая проблема. Написал макрос - сейчас использую: [vba]
Код
Sub Цветовые_шкалы() Dim t As String Dim c As Long Dim ran As Range Dim ra As Range Dim col1() Dim col2() Dim col3()
col1 = Array(7039480, 8109667, 7039480, 8109667, 7039480, 8109667, 10285055, 7039480, 8109667, 7039480, 16776444, 13011546) col2 = Array(8711167, 8711167, 16776444, 16776444, 16776444, 10285055, 8109667, 16776444, 16776444, 16776444, 7039480, 16776444) col3 = Array(8109667, 7039480, 8109667, 7039480, 13011546, 0, 0, 0, 0, 0, 0, 7039480) Set ran = Selection t = InputBox("1 = построчно" & vbCr & "2 = по столбцам" & vbCr & "3= весь диапазон", "применить для", 1) If t = "" Then Exit Sub c = InputBox("Вариант расцветки", , 0) If t = "3" Then Call цветШкала(ran, col1(c) * 1, col2(c) * 1, col3(c) * 1): Exit Sub If t = "1" Then For Each ra In ran.Rows Call цветШкала(ra, col1(c) * 1, col2(c) * 1, col3(c) * 1) Next Exit Sub End If If t = "2" Then For Each ra In ran.Columns Call цветШкала(ra, col1(c) * 1, col2(c) * 1, col3(c) * 1) Next Exit Sub End If End Sub
Private Sub цветШкала(r As Range, col1#, col2#, col3#) With r .FormatConditions.AddColorScale ColorScaleType:=3 .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1) .ColorScaleCriteria(1).Type = xlConditionValueLowestValue .ColorScaleCriteria(1).FormatColor.Color = col1
Помогите пожалуйста, мне нужно использовать не цветные шкалы, а гистограммы. С гистограммами подобная проблема. Не найдётся случаем макроса на гистограммы?
Помогите пожалуйста, мне нужно использовать не цветные шкалы, а гистограммы. С гистограммами подобная проблема. Не найдётся случаем макроса на гистограммы?stalber
Очень понравился код выше. А можно ли немного его скорректировать, чтобы можно было выбрать не весь диапазон, а колонки с шагом? Пример приложил.
Всем доброго времени суток!
Очень понравился код выше. А можно ли немного его скорректировать, чтобы можно было выбрать не весь диапазон, а колонки с шагом? Пример приложил.Oh_Nick
With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor .Color = 7039480 .TintAndShade = 0 End With End Sub
Sub MainMacro() ApplyColorScale Range("G8,I8,K8,M8") ApplyColorScale Range("G9,I9,K9,M9") ApplyColorScale Range("G10,I10,K10,M10") ApplyColorScale Range("G11,I11,K11,M11") End Sub
[/vba]
через макрекодер получилось сделать вот так,но опять же это для определенных диапазонов. а можно ли это как то автоматизировать?
With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor .Color = 7039480 .TintAndShade = 0 End With End Sub
Sub MainMacro() ApplyColorScale Range("G8,I8,K8,M8") ApplyColorScale Range("G9,I9,K9,M9") ApplyColorScale Range("G10,I10,K10,M10") ApplyColorScale Range("G11,I11,K11,M11") End Sub