[英]conditional formatting pivot table vba
我想在数据透视表中进行一些条件格式设置,并确保在更改数据透视表字段时,我的格式保持与需要格式化的内容相关。
这是开始:
到目前为止,我的数据集中有2列:account#和sales。 我遇到的问题是我的oPvtItm是空的。 因此,“ for each”循环不执行任何操作。
Sub condformat1()
Dim ws As Worksheet
Dim oPvt As PivotTable
Dim oPvtItm As PivotItem
Set ws = ActiveSheet
Set oPvt = ws.PivotTables("pv1")
For Each oPvtItm In oPvt.PivotFields("sum of sales").PivotItems
If oPvtItm > 100000 Then
oPvtItm.DataRange.Interior.Color = vbYellow
End If
Next
End Sub
解决此问题后,我想对我的帐户进行分类(例如,a,b,c组)。 可能是行或列。 (让它成为一列来简化)。 因此,我只愿意分析帐户组“ a”的销售额。
找到了我想要的东西:
Sub condformat2()
Dim ws As Worksheet
Dim oPvt As PivotTable
Dim oPvtItm As PivotItem
Dim abc As String
Set ws = ActiveSheet
Set oPvt = ws.PivotTables("pv1")
Set oPvtDataField = oPvt.ColumnFields(1)
abc = "a"
For Each oPvtItm In oPvtDataField.PivotItems
If oPvtItm = abc Then
For Each cell In oPvtDataField.PivotItems(abc).DataRange
If cell.Value > 100000 Then
cell.Interior.Color = vbYellow
End If
Next
End If
Next
End Sub
感谢Doug以及这些资料的作者:
http://www.databison.com/how-to-read-data-from-pivot-table-using-vba/
http://peltiertech.com/referencing-pivot-table-ranges-in-vba/
如我的评论中所述,我会考虑使用实际的条件格式而不是VBA。 但是,以下代码可以完成您所要求的操作:
Sub condformat1()
Dim ws As Worksheet
Dim oPvt As PivotTable
Dim oPvtDataField As PivotField
Dim cell As Range
Set ws = ActiveSheet
Set oPvt = ws.PivotTables("pv1")
Set oPvtDataField = oPvt.DataFields("sum of sales")
For Each cell In oPvtDataField.DataRange
If cell.Value > 100000 Then
cell.Interior.Color = vbYellow
End If
Next
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.