[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ピボットテーブルで日付スルー方法』(トランス)
以前は『指定日置換』にて、お世話になりました。
今回の質問ですが、月初日〜集計開始日の間でピボットテーブルに該当日付(土日祝など)データがない場合、スルーする方法に困っております。
以下に現状のマクロを記載しますので、解決法を教えて頂きたいです。宜しくお願い致します。
Dim MyDate As Variant Dim MyDate1 As Date Dim d As Integer Dim n As Integer
MyDate = InputBox("集計開始日(yyyy/m/d)")
If MyDate = "" Then MsgBox "入力が不正です。マクロを終了します。" Exit Sub End If
MyDate1 = DateSerial(Format(DateAdd("m", -1, Date), "yyyy"), Format(DateAdd("m", -1, Date), "m"), 1)
d = DateDiff("d", MyDate1, CDate(MyDate))
For n = 1 To d
Sheets("ピボット").Select
ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "日付", xlButton With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("日付") .PivotItems(Format(CDate(MyDate) - n, "yyyy/m/d")).Visible = False
End With
Next n
[エクセルのバージョン] Excel2000 or Excel97
[OSのバージョン] Windows2000 or WindowsNT
的ハズレでしたらスミマセン(あきお) 2つばかり思いつきます。 1. 入力日付の存在チェックを行い、存在しない日付をリジェクトする方法 2. ダミーですべての日付データを予め追加しちゃう方法
「2」の方法で、土日祝に「ScheduleBoard(アプリ)」にてダミーフラグ数値(99:文化の日など)を 入力して上のマクロで月初日〜集計開始日(営業日も含む)の期間を除外して、さらに
ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "数値", xlButton With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数値") .PivotItems("99").Visible = False
で集計開始日〜月末の土日祝のみ除外して、必要な期間の営業日データのみ取得 出来出来そうなイメージが出来ましたので試してみます。
あきおさん、有難う御座いました。
今度は、集計終了日〜月末の間でピボットテーブルに日付(未来営業日や土日祝など)データがない場合の ピボットテーブルにて非表示アイテムにする方法で困っております。 以下に現状のマクロを記載しますので、解決法を教えて頂きたいです。 宜しくお願い致します。
※元データには、2ヶ月分のデータが入っていて、前月初〜集計開始日と 集計終了日〜翌月末が余分になる為、ピボットテーブルにて 非表示アイテムにする必要があります。
実施したい内容は、ピボットテーブルの元データで日付の入力有無を検索 → ない場合は非表示アイテムにする対応をスルー(ある場合は非表示アイテムにする) → 次の日の入力有無を検索 の繰り返しです。
Dim EDate As Date Dim FDate As Date Dim NDate As Date Dim MyDate1 As Variant Dim MyDate2 As Variant Dim y As Variant Dim m As Variant Dim d1 As Integer Dim d2 As Integer Dim i As Integer Dim n1 As Integer Dim n2 As Integer Dim Filepath As String Dim FindDate1 As Range Dim FindDate2 As Range
Application.ScreenUpdating = False Application.DisplayAlerts = False
y = InputBox("作成年(yyyy)")
If y = "" Then MsgBox "入力が不正です。マクロを終了します。" Exit Sub End If
m = InputBox("作成月(m)")
If m = "" Then MsgBox "入力が不正です。マクロを終了します。" Exit Sub End If
FDate = DateSerial(y, m, 1) NDate = DateSerial(y, m + 2, 1) EDate = DateAdd("d", -1, NDate)
Filepath = "C:\users\集計\工数\" & Format(FDate, "ge") & "\元ネタ\" & m & "月\雛型.xls"
Workbooks.Open (Filepath)
Worksheets(m & "月").Select Range("A1:F" & Range("A65536").End(xlUp).Row).Copy
Windows("工数集計表が35日雛形.xls").Activate Worksheets("元データ").Select Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False
Windows("雛型.xls").Activate ActiveWorkbook.Close
Windows("工数集計表が35日雛形.xls").Activate Sheets("ピボット").Select ActiveSheet.PivotTables("ピボットテーブル1").RefreshTable
MyDate1 = InputBox("集計開始日(yyyy/m/d)")
If MyDate1 = "" Then MsgBox "入力が不正です。マクロを終了します。" Exit Sub End If
MyDate2 = InputBox("集計終了日(yyyy/m/d)")
If MyDate2 = "" Then MsgBox "入力が不正です。マクロを終了します。" Exit Sub End If
d1 = DateDiff("d", FDate, CDate(MyDate1)) d2 = DateDiff("d", CDate(MyDate2), EDate)
For n1 = 1 To d1
Sheets("元データ").Select Set FindDate1 = Columns("A:A").Find(What:=Format((FDate) + n1 - 1, "yyyy/m/d"), _ LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=True)
If FindDate1 Is Nothing Then GoTo Through1 End If
Sheets("ピボット").Select ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "日付", xlButton With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("日付") .PivotItems(Format((FDate) + n1 - 1, "yyyy/m/d")).Visible = False
End With Through1: Next n1
For n2 = 1 To d2
Sheets("元データ").Select
Set FindDate2 = Columns("A:A").Find(What:=Format((EDate) - n2 + 1, "yyyy/m/d"), _ LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=True)
If FindDate2 Is Nothing Then GoTo Through2 End If
Sheets("ピボット").Select ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "日付", xlButton With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("日付") .PivotItems(Format((EDate) - n2 + 1, "yyyy/m/d")).Visible = False
End With Through2: Next n2
For i = 1 To 35
Sheets("工数集計表").Select Range("A13") = MyDate1 Range("G13:CA132").Replace _ What:="【" & i & "】", Replacement:=Format(CDate(MyDate1) - 1 + i, "yyyy/m/d"), _ LookAt:=xlPart, MatchCase:=False
Next i
Application.ScreenUpdating = True Application.DisplayAlerts = True
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.