なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

Power Query:当月からnヶ月前の日付を抽出する

Power Queryで Excelの TODAY関数にあたるのは「DateTime.LocalNow」なのだが、抽出する時には別の関数を使うことが多い。「当日(に関連する情報)と一致するか」を返す関数が存在するからだ。

例えば本日のデータだけが欲しい時は、フィルタの抽出条件で「今日」を選ぶだけでいい。抽出結果の式を見れば分かるが「Data.IsInCurrentDay」を使えばいいことが分かる。「明日」や「昨日」を含めて、当日に関連する情報の抽出には専用の関数が用意されている。

Date.IsInCurrentDay:現在日時と日が一致するか
Date.IsInCurrentWeek:現在日時と週が一致するか
Date.IsInCurrentMonth:現在日時と月が一致するか
Date.IsInCurrentQuarter:現在日時と四半期が一致するか
Date.IsInCurrentYear:現在日時と年が一致するか
Date.IsInNextDay:現在日時の翌日と日が一致するか Date.IsInNextWeek:現在日時の翌週と週が一致するか Date.IsInNextMonth:現在日時の翌月と月が一致するか Date.IsInNextQuarter:現在日時の翌四半期と期が一致するか Date.IsInNextYear:現在日時の翌年と年が一致するか
Date.IsInPreviousDay:現在日時の前日と日が一致するか Date.IsInPreviousWeek:現在日時の前週と週が一致するか Date.IsInPreviousMonth:現在日時の前月と月が一致するか Date.IsInPreviousQuarter:現在日時の前四半期と期が一致するか Date.IsInPreviousYear:現在日時の前年と年が一致するか
Date.IsInNextNDays:現在日時からn日後までと日が一致するか Date.IsInNextNWeeks:現在日時からn週後までと週が一致するか Date.IsInNextNMonths:現在日時からnヶ月後までと月が一致するか Date.IsInNextNQuarters:現在日時からn四半期後までと期が一致するか Date.IsInNextNYears:現在日時からn年後までに含まれるか
Date.IsInPreviousNDays:現在日時からn日前までに含まれるか Date.IsInPreviousNWeeks:現在日時からn週前までに含まれるか Date.IsInPreviousNMonths:現在日時からnヶ月前までに含まれるか Date.IsInPreviousNQuarters:現在日時からn四半期前までに含まれるか Date.IsInPreviousNYears:現在日時からn年前までに含まれるか
Date.IsInYearToDate:現在日時の年の初日から当日までに含まれるか Date.IsLeapYear:現在日時の年がうるう年か

正直覚えていられないので、必要に応じてヘルプを見ることになると思う。

注意が必要なのは、例えば Date.IsInNextNMonths関数を使った場合、「nヶ月後の月と一致するか」ではなく「当日からnヶ月後までに含まれるか」になること。

なので「当日(2023/3/8)から2ヶ月前の月のデータ」が欲しい場合には、この関数は使えない。

こういう時は、条件を「2ヶ月後、当月に該当する日付になるか」と考えればいい。

Date.IsInCurrentMonth(Date.AddMonths([日付], 2))

これで「当日から2ヶ月前の月のデータ」だけを抽出できる。