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

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

Power Query:結合で入力が省略された表から集計する

左の表から右のような集計表を作りたい場合。「そもそも入力表にセル結合なんていれんなっ!」といいたい気持ちをぐっと押さえてクエリでデータクレンジングしてしまおう。

まずこういう表にはテーブル書式なんて設定されていないので、クエリで利用する時は範囲を名前定義する必要がある。しなくても「ファイルから」で指定すればクエリを作ることは一応できるけど、この場合ファイルパスが変わったらリンクが切れてしまうので、基本はNG。

範囲が固定か分からないので、今回は列ごと範囲を定義してしまうことにする。A:D列を選択した状態で名前ボックスに「データ範囲」と入力して Enterで確定。

[データ]→データの取得と変換の[テーブルまたは範囲から]

これでクエリが作成できるので、ここからはエディタ画面での設定になる。

最初にこれだけは絶対なのがデータ範囲を絞り込むこと。今は列参照しているので範囲が馬鹿でかくなっている。これをちゃんとやって緩衝地点を作っておかないと、後々の処理が重くなってしまう。その際、「これとこれをフィルタで抽出」とやるより「上から必要なデータだけを残す」ほうが処理負担が少ない。

右ペインの「クエリの設定」で「ソース」を右クリックして「後にステップの挿入」。「カスタム1」が出来上がるので数式バーに下記を入力。

= Table.Buffer(Table.FirstN(ソース, each [Column4]<>null))

「Column4(数量)」は必ずデータがあるだろうから、Table.FirstNで「上から Column4にデータが入力されている行」だけを残している。Table.Bufferはバッファ処理を入れるための M関数。

learn.microsoft.com

ここまでできたら後は、マウス操作だけで終わる作業なんでさらっと。

[変換]→[1行目をヘッダーとして使用]

 

「日付」・「商品」列を選択した状態で右クリック[フィル]→[下]

[ファイル]→[閉じて読み込む]→[閉じて次に読み込む]

データンポートで[ピボットテーブル レポート]を選択し
既存のワークシートで読み込み先のセルを指定して[OK]

ここから先は、普通のピボットテーブルと全く同じ。

レポートのレイアウト:表形式
行フィールド:「日付」
列フィールド:「商品」「サイズ」
値フィールド:「合計 / 数量」

体裁を整えたら完成。