Sub Мяу() With ActiveSheet If .PivotTables.Count <> 1 Then Exit Sub With .PivotTables.Item(1) .TableRange1.Interior.Color = xlNone tbRowStart = .TableRange1.Row tbRowEnd = .TableRange1.Rows.Count + tbRowStart - 1 tbColStart = .TableRange1.Column tbColEnd = .TableRange1.Columns.Count + tbColStart - 1 End With For i = tbRowStart To tbRowEnd For j = 2 To tbColEnd Step 2 If IsNumeric(.Cells(i, j)) Then If .Cells(i, j + 1) <> .Cells(i, j) Then ' хочу разноцветно .Cells(i, 1).Interior.Color = vbRed End If End If Next Next End With End Sub
[/vba] Но в большом массиве все сливается, и анализировать не удобно. Хотелка - изменить цвет раскраски в зависимости принадлежности ячейки к определенному уровню группировки в сводной таблице. Желательно без использования имени поля. Подскажите, как прописать условие?
Мяу! Есть макрос для раскраски сводной таблицы.
[vba]
Код
Sub Мяу() With ActiveSheet If .PivotTables.Count <> 1 Then Exit Sub With .PivotTables.Item(1) .TableRange1.Interior.Color = xlNone tbRowStart = .TableRange1.Row tbRowEnd = .TableRange1.Rows.Count + tbRowStart - 1 tbColStart = .TableRange1.Column tbColEnd = .TableRange1.Columns.Count + tbColStart - 1 End With For i = tbRowStart To tbRowEnd For j = 2 To tbColEnd Step 2 If IsNumeric(.Cells(i, j)) Then If .Cells(i, j + 1) <> .Cells(i, j) Then ' хочу разноцветно .Cells(i, 1).Interior.Color = vbRed End If End If Next Next End With End Sub
[/vba] Но в большом массиве все сливается, и анализировать не удобно. Хотелка - изменить цвет раскраски в зависимости принадлежности ячейки к определенному уровню группировки в сводной таблице. Желательно без использования имени поля. Подскажите, как прописать условие? RAN
Спасибо, Сергей, но не то. Однако, если долго мявучиться, что-нибудь получится. Правда, помог еще и Excel 2010, который куда разговорчивее партизана 2007.
[vba]
Код
Sub qqq() With ActiveSheet If .PivotTables.Count <> 1 Then Exit Sub With .PivotTables.Item(1)
tbColStart = .TableRange1.Column tbColEnd = .TableRange1.Columns.Count + tbColStart - 1 End With For i = tbRowStart To tbRowEnd For j = 2 To tbColEnd Step 2 If IsNumeric(.Cells(i, j)) Then If .Cells(i, j + 1) <> .Cells(i, j) Then
If .Cells(i, 1).PivotField.Orientation = 1 Then If .Cells(i, 1).PivotField.Position = 1 Then .Cells(i, 1).Interior.Color = vbRed ElseIf .Cells(i, 1).PivotField.Position = 2 Then .Cells(i, 1).Interior.Color = vbCyan ElseIf .Cells(i, 1).PivotField.Position = 3 Then .Cells(i, 1).Interior.Color = vbYellow End If End If
End If End If Next Next End With
End Sub
[/vba]
Спасибо, Сергей, но не то. Однако, если долго мявучиться, что-нибудь получится. Правда, помог еще и Excel 2010, который куда разговорчивее партизана 2007.
[vba]
Код
Sub qqq() With ActiveSheet If .PivotTables.Count <> 1 Then Exit Sub With .PivotTables.Item(1)
tbColStart = .TableRange1.Column tbColEnd = .TableRange1.Columns.Count + tbColStart - 1 End With For i = tbRowStart To tbRowEnd For j = 2 To tbColEnd Step 2 If IsNumeric(.Cells(i, j)) Then If .Cells(i, j + 1) <> .Cells(i, j) Then
If .Cells(i, 1).PivotField.Orientation = 1 Then If .Cells(i, 1).PivotField.Position = 1 Then .Cells(i, 1).Interior.Color = vbRed ElseIf .Cells(i, 1).PivotField.Position = 2 Then .Cells(i, 1).Interior.Color = vbCyan ElseIf .Cells(i, 1).PivotField.Position = 3 Then .Cells(i, 1).Interior.Color = vbYellow End If End If