プロが教えるわが家の防犯対策術!

VBAでピボットテーブルの日付フィルタを行いたいですが可能でしょうか?
可能であれば方法をご教授お願い致します。

①下記"2019/5/8"となっているところを、当月以降でフィルタ
 (例:今日が2019/5/8の場合、2019/5/1以降を表示)
 ActiveSheet.PivotTables("Pibot1").PivotFields("日付").PivotFilters.Add2 Type:= _
xlAfter, Value1:="2019/5/8"

②下記"2019/5/8"となっているところを、当月より前でフィルタ
 (例:今日が2019/5/8の場合、2019/4/30以前を表示)
ActiveSheet.PivotTables("Pibot1").PivotFields("日付").PivotFilters.Add2 Type:= _
xlBefore, Value1:="2019/5/8"

"2019/5/8"の個所を変数にすれば良いかと思っているのですが、変数をどのようにすれば
良いのか分からず質問させて頂きました。

※上記どちらもマクロの記録機能を使った構文ですm(_ _)m

A 回答 (3件)

こんにちは



よくわかりませんが、要は「当月初日」と「前月最終日」を求めたいということでしょうか?

例えば
 firstDay = DateSerial(Year(Date), Month(Date), 1)
 lastDay = firstDay - 1

 Debug.Print firstDay '→ 2019/05/01
 Debug.Print lastDay  '→ 2019/04/30
とかではいかがですか?
    • good
    • 0
この回答へのお礼

ありがとうございました。
VBA上での日付算出方法理解出来ました。
活用させて頂きます。

お礼日時:2019/05/09 16:01

例えば、こういうことでしょうか。


ダイアログ・タイプにしてみました。

Dim ret As Variant
Dim mDate As Variant
ret = Application.InputBox("日付を入力してください yyyy/mm/dd", Type:=2)
If Not IsDate(ret) Then Exit Sub  '日付でなかったら、離脱
mDate = CDate(ret)
mDate = Format$(mDate, "yyyy/m/d") '文字列に変換/変数代入
With ActiveSheet
 .PivotTables("ピボットテーブル1").PivotFields("日付").ClearAllFilters
 .PivotTables("ピボットテーブル1").PivotFields("日付").PivotFilters.Add2 Type _
  :=xlBefore, Value1:=mDate

End With
    • good
    • 0
この回答へのお礼

ありがとうございます。
説明不足で申し訳ございません。
「当月」は本日の日時を自動で読み取って実行しようとしていました。
既にご回答済みの内容で実施したいと思います。
お手数お掛けしました。

お礼日時:2019/05/13 15:52

回答がつかないようなのでひとまず


①日付が指定されているセルがあるならばそのセルを参照、無い場合当日「now()」で設定すればどうでしょうか
②先月の最終日ということなので、当該日付の日を1日にし1を引けば先月の最終日となります
回答になりましたでしょうか
また、マクロで行うということはボタン等にて切替を行うのかシートが分かれていてデフォルトでファイルオープン時等に行うのか、そのあたりが不明ですので、詳細をいただければまた検討します
    • good
    • 0
この回答へのお礼

VBA上だけでやろうとしていましたが、セルを参照してそれを変数で持たせておけば
自由に設定が可能ですね。失念していました。
アドバイスありがとうございます。
何とかなりそうです。

お礼日時:2019/05/09 11:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング