簡體   English   中英

條件格式數據透視表vba

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM