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

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

Power Query:抜けている日付を補って表示する

画像の通りなんだけども、元のテーブルに値のない日付を追加して表示したい場合どうするか。

この場合、まずは「4/1」から「4/7」までが連番になっている日付テーブルを新規に作ったほうがいい。元のテーブルは「テーブル1」として読み込み済みだとして、

日付テーブル

let     開始日 = List.Min(テーブル1[日付]),     終了日 = List.Max(テーブル1[日付]),     日付リスト = List.Transform(         {Number.From(開始日)..Number.From(終了日)},         Date.From     ),     テーブル変換 = Table.FromColumns(         {日付リスト},         type table[日付=date]     ) in     テーブル変換

これで日付テーブルが完成。

後はテーブル1に日付テーブルをマージして値列を展開して……いや待った待った。そんなことをする必要はないよね。全体の読み込みが発生する「マージ」とか「並べ替え」とかはなるべく使わないようにしたい。

こういう時は、縦結合してグループ化したほうが無駄がない。

くれぐれも日付テーブルが先ね。でないとグループ化した時に順番がおかしくなるから。

結合テーブル

let     ソース = 日付テーブル & テーブル1,     行のグループ化 = Table.Group(         ソース, {"日付"},         {"値", each List.Sum([値]), type nullable number}     ) in     行のグループ化

「null」ではなく「0」を返したい時は「List.Sum([値])」を「List.Sum([値]&{0})」とすればいい。