使用VBA,如何根据特定单元格值将条件格式应用于数据透视表的最后一列

时间:2014-11-19 11:52:56

标签: excel vba excel-vba

我有以下数据透视表:

    Risk Impact         
        High        Low     Medium      Grand Total
AA       2          7         3               12
AB                 10                         10
AC       2         1          2                5
AD       2         1                           3
AE                 1                           1
BA                 3           1               4
BB                  
BC       1          1

我想根据每个细胞的值应用特定的细胞颜色,如下所述:

  • 没有风险发现:"总细胞颜色" =绿色
  • 1至2低风险调查结果;或1中等风险发现:"总细胞颜色" =橙色
  • 超过2个低风险调查结果;或从1低风险调查结果和1中等风险调查结果;或从1个以上中等风险调查结果;或从1高风险发现开始:"总细胞颜色" =红色

我尝试的方法是定义每个"枢轴项目"并应用if语句来评估每个条件。

请在下面找到我的代码:

Sub conditionalformatting4()

Dim c As Range
With ActiveSheet.PivotTables("Pivottable2")
Set i = ActiveSheet.PivotTables("Pivottable2").PivotFields("Risk Impact").PivotItems("High").DataRange.Cells
Set u = ActiveSheet.PivotTables("Pivottable2").PivotFields("Risk Impact").PivotItems("Low").DataRange.Cells
Set v = ActiveSheet.PivotTables("Pivottable2").PivotFields("Risk Impact").PivotItems("Medium").DataRange.Cells
Set c = ActiveSheet.PivotTables("Pivottable2").PivotFields("Risk Impact").PivotItems("Grand Total").DataRange.Cells

' apply formatting to last column cell if condition is met

For Each c In .PivotFields("Risk Impact").PivotItems("Grand Total").DataRange.Cells
  If i.Value >= 1 Or v.Value > 1 Or u.Value > 2 Or (v.Value >= 1 And u.Value >= 1) Then
    With .TableRange1.Rows(c.Row - .TableRange1.Row + 1)
      .Font.Bold = True
      .Interior.ColorIndex = 3
    End With
  ElseIf (u.Value > 1 And u.Value < 2) Or v.Value = 1 Then
    With .TableRange1.Rows(c.Row - .TableRange1.Row + 1)
      .Font.Bold = True
      .Interior.ColorIndex = 45
    End With
  Else
  With .TableRange1.Rows(c.Row - .TableRange1.Row + 1)
      .Font.Bold = True
      .Interior.ColorIndex = 4
  End With
  End If
Next
End With
End Sub

所以我想知道你认为这是正确的做法吗?

然后我得到的错误是&#34;总计列&#34;不被承认。 有任何想法吗?

0 个答案:

没有答案