【问题标题】:conditional formatting pivot table vba条件格式数据透视表vba
【发布时间】:2016-01-13 11:34:22
【问题描述】:

我想在数据透视表中进行一些条件格式化,并确保当数据透视字段发生更改时,我的格式与需要格式化的内容保持相关。

这里是开始:

到目前为止,我的数据集中有 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”的销售额。

【问题讨论】:

  • 您是否尝试过使用实际的条件格式?
  • 是的,但是当你删除一个字段或者改变它的位置时你会怎么做??

标签: excel vba pivot-table


【解决方案1】:

找到了我要找的东西:

    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/

【讨论】:

  • 啊,您找到了 Peltier 参考!我是想说那个。很好的东西。
【解决方案2】:

正如我在评论中提到的,我会考虑使用实际的条件格式而不是 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

【讨论】:

  • 谢谢!这表明对我有用。现在如何解决我的第二个问题:我的帐户分为 3 组:a、b、c。我只想突出显示组 a ?我很困惑,pivotitems 有什么问题?我试过了,但它不起作用:For Each cell In oPvtDataField.PivotItems("b").DataRange
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
相关资源
最近更新 更多