ピボットテーブルのソースシート。2つの列が含まれています。1つは名前用で、もう1つはスコア用です。スレッドのタイトルが示すように、すべての名前とそれに対応する偶数のスコアを持つ名前を表示したいと思います。
これを実現する別の方法は、3番目の列を作成し、IF式を実行して、どの数値が奇数であるかを確認することです。次に、この3番目の列をピボットテーブルに含めて、フィルターとして使用します。
しかし、ソースを変更せずに同じことを行う方法はありますか?
ピボットテーブルのソースシート。2つの列が含まれています。1つは名前用で、もう1つはスコア用です。スレッドのタイトルが示すように、すべての名前とそれに対応する偶数のスコアを持つ名前を表示したいと思います。
これを実現する別の方法は、3番目の列を作成し、IF式を実行して、どの数値が奇数であるかを確認することです。次に、この3番目の列をピボットテーブルに含めて、フィルターとして使用します。
しかし、ソースを変更せずに同じことを行う方法はありますか?
ピボットアイテムをループしてから2で割って、偶数かどうかを確認し、偶数でない場合は単に非表示にすることができます。この例を参照してください。必要に応じて修正してください。また、エラー処理は行っていません。私はあなたがそれの世話をすることができると確信しています...
コード
Option Explicit
Sub HideOddNumbers()
Dim ws As Worksheet
Dim pvtItem As PivotItem
Dim pvt As PivotTable
Dim pvtFld As PivotField
'~~> Change this to the respective sheet
Set ws = ThisWorkbook.Sheets("Sheet1")
'~~> Change this to the respective pivot name
Set pvt = ws.PivotTables("PivotTable1")
'~~> This is the column
Set pvtFld = pvt.PivotFields("Scores")
With pvtFld
.CurrentPage = "(All)"
.EnableMultiplePageItems = True
'~~> Loop through all items in the pivot and
'~~> divide the values by 2 and check if they are even or not
For Each pvtItem In pvtFld.PivotItems
If Val(pvtItem.Value) Mod 2 <> 0 Then pvtItem.Visible = False
Next
End With
End Sub
スクリーンショット
前:
後: