Davidには、年でフィルタリングされた多くのピボットテーブルがあります。彼のデータには、年の個別のフィールドがあります(Year関数を介して導出された値2016、2017、2018など)。彼はほとんどの場合、より古い年を除外し、より最近の年について報告します。新年が来ると、Davidがすべてのピボットテーブルを編集して最新の年を選択するのは面倒なプロセスです。彼は、面倒な編集を行う必要がないように、ピボットテーブルフィルターの選択値を指定する方法があるかどうか疑問に思います。

おそらく、これを行う最も簡単な方法は、ピボットテーブルのソースデータに単一の列を追加することです。列には、行がピボットテーブルに含めるための目的の範囲内にあるかどうかを指定する簡単な数式を含めることができます。たとえば、列Aにその行のトランザクション日付が含まれている場合、追加された列に次のように含めることができます。

=YEAR(A2)>YEAR(NOW())-3

数式の結果は、トランザクションが過去3年以内であるかどうかに応じて、TrueまたはFalseのいずれかになります。したがって、この式が2018年に評価された場合、2016年、2017年、および2018年内のすべてのトランザクションはTrueを返します。他のすべてはFalseになります。次に、ピボットテーブル定義内で、この特定の列の内容に基づいてフィルタリングできるため、これらのTrue行のみがピボットテーブルに含まれるようになります。

マクロベースのソリューションが必要な場合は、各ピボットテーブルを調べて「Year」という名前のピボットフィールドを変更するソリューションを簡単に開発できます

希望の年と同じになるように。以下は、そのような変更を行うのがいかに簡単かを示しています。

Sub ChangePivotYear()

Dim sht As Worksheet     Dim pvt As PivotTable     Dim iYear as Integer

iYear = 2018     ' Change to desired year     For Each sht In Worksheets         For Each pvt In sht.PivotTables             pvt.PivotFields("Year").ClearAllFilters             pvt.PivotFields("Year").CurrentPage = iYear        Next pvt     Next sht End Sub

マクロはフィールドを2018に設定します。別の年を使用する場合は、Year変数に割り当てられているものを変更するだけです。また、マクロはブック全体のすべてのピボットテーブルに影響することに注意してください。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(12571)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。