2017-10-23 15 views
0

ピボットテーブルの作成に役立つVBAコードがありますが、ピボットテーブルで空白として表示される0値のエントリが発生します。 0の値を除外することができます。別の言葉では、値が0の場合はピボットアイテムを表示しないようにします。vbaコードを使用してピボットテーブルのゼロをフィルタアウトする

希望の結果は画像を参照してください。コードを実行するとエラーはなく、何も起こっていないようです。

'filter out zero 
    Dim ws1 As Worksheet 
    Set ws1 = Worksheets("PivotTable") 

    Dim pf2 As PivotField 
    Set pf2 = Pvt.PivotFields("Price Range") 

    Dim pi2 As PivotItem 
    For Each pi2 In pf2.PivotItems 
     pi2.Visible = Len(ws1.Range(pi2.DataRange.Address)) > 0 
    Next 

End Sub 

enter image description here

答えて

1

上記のコードは、多くの問題、主に割り当てられていない変数があります。モジュールの一番上にOption Explicitを使用すると、コード内の正しい構文を習得するのを大いに助けます。

これはあなたのために動作します:

Option Explicit 

Sub FilterBlankPivotItems() 

    Dim ws1 as Worksheet 
    Set ws1 = Worksheets("PivotTable") 

    Dim pt as PivotTable 
    Set pt = ws1.PivotTable("PivotTable1") 

    Dim pf as PivotField 
    Set pf = pt.PivotFields("PriceRange") 

    Dim pi as PivotItem 
    For each pi in pf.PivotItems 
     pi.Visible = Len(ws1.Range(pi.DataRange.Address)) > 0 
    Next 

End Sub 
+1

はそれが正しい手に入れた、私は価格の合計値を置き換える必要があります範囲。それはそれを行います。君は最高だ。私は週末にすべての異なった方法をしたが、まだ問題があった。あなたはちょうどその日を救った。ありがとう、 – sc1324

1

PivotItemsを反復処理する必要はありません。代わりに、 "価格帯"フィールドに値フィルタを設定するだけで、対応する値がゼロよりも大きいアイテムを表示することができます。

Option Explicit 

Sub FilterBlankPivotItems() 

Dim ws As Worksheet 
Dim pt As PivotTable 
Dim pf As PivotField 
Dim pfValues As PivotField 

Set ws = Worksheets("SomeWorksheetName") 
Set pt = ws.PivotTables("SomePivotTableName") 
Set pf = pt.PivotFields("SomePivotFieldName") 
Set pfValues = pt.PivotFields("SomeValuesFieldName") 

pf.ClearAllFilters 
pf.PivotFilters.Add2 Type:=xlValueIsGreaterThan, DataField:=pfValues, Value1:=0 

End Sub 

これは、これを行うことと同じです。

enter image description here

enter image description here

enter image description here

enter image description here

+0

ありがとう、あなたのコードも魅力のように動作します。私はピボットのグループ化のために実際に別の質問がありますが、今度はパーセンテージで、興味があればチェックしてください。 – sc1324

関連する問題