見出し画像

「ピボットテーブルの逆ってどうやるの?」Googleスプレッドシートでクロス表をリスト表に変換する方法【デジマのあれこれ Vol.5】

こんにちは! 企業向けにデジタルマーケティングの支援を行う、株式会社プレシジョンマーケティングです。専門用語が多く、新しい技術やツールが次々と登場するデジマの世界。【デジマのあれこれ】では、最新技術を分かりやすく紹介し、デジタルマーケティングの力を最大限活用していただくことを目指します。

Vol.5のテーマは「ピボットテーブルの逆 @Googleスプレッドシート」

デジタルマーケティングに関わる方はほぼ全員、Googleスプレッドシートと格闘しているはず(弊社だけじゃないですよね?)。詳細なデータを扱えるのはデジマの利点であり、楽しいポイントでもあるのですが、同時に大変な部分でもあります。今回は、そんな大変な業務のなかで使える小技をご紹介します。

突然ですが、「ピボットテーブルの逆をやりたい!」つまり、クロス表をリスト表に変換したいと思ったことはありませんか? 弊社では時々あります。お客様や担当者からデータをクロス形式で共有されたけれど、BIツール等でさらに集計・分析するためのRawデータとしてリスト形式のデータもほしいというケースです。

そんなときに、以下の方法を使ってみてください。Excelの場合の参考記事のURLも紹介しています。

その前に:クロス表とかリスト表ってなに?

月×商品A~Dの売上データを表にする想定で説明します。この場合、大抵は以下のどちらか形式で集計するかと思います。

リスト表(リスト形式表):すべての商品を同じ列にまとめて集計した、シンプルな表

リスト形式表

クロス表(クロス集計表):商品ごとに列を分けて集計した、意味の解釈がしやすい表

クロス形式表


クロス表からリスト表にする方法

Googleスプレッドシートの場合

以下、Googleスプレッドシートで行う場合の手順です。Apps Scriptを使う方法もありますが、今回は関数だけで実現します。

準備

下準備として元のクロス表の行ラベル、列ラベル、データ部分の範囲に名前をつけておきます。

列ラベルは「商品」
行ラベルは「月」
データ部分は「売上」

リスト形式表示用シートの作成

次にリスト形式のデータ表示用に別シートを作ります。1行目に列の項目名を入力し、データ先頭行A2セルには以下のような数式を入力します

=ARRAYFORMULA(SPLIT(FLATTEN(月&"_"&商品),"_"))

これでA、B列に月と商品の全組み合わせ(直積)が表示されます。関数で組み合わせを作成する手順は大まかにいうと以下の図の通りです。ARRAYFORMULA関数を使うことで複数セル範囲をまとめて、行列として扱っています。

関数で全組み合わせを作る手順

あとは元のクロス表から、各行の月(A列)と商品(B列)に対応する売上数値をC列に持ってくればOKです。

具体的な数式はこちらです。

C2セルの数式は以下です。

=INDEX(売上,MATCH(A2,月,0),MATCH(B2,商品,0))

2番目と3番目の引数の部分の数式の意味は以下です。

MATCH(A2,月,0)
A2セルの値が元のクロス表の行ラベル「月」の何番目にあるか 
= 月の位置

MATCH(B2,商品,0)
B2セルの値が元のクロス表の列ラベル「商品」の何番目にあるか
= 商品の位置


式全体としては、表の縦位置、横位置を指定して値を取得するINDEX関数を利用し

INDEX(売上,月の位置,商品の位置)

とすることで対象の月と商品に対応する売上の値を表示しています。C列の数式を最終行までオートフィルすればリスト形式データの完成です🎉


EXCELの場合

同様のクロス表→リスト形式の変換をExcelで行いたい場合は以下の記事が参考になります。
ピボットテーブルウィザードでクロス表→ピボットテーブルと変換し、最後はワンクリックで全データ一覧を表示してリスト形式に一発で変換する素晴らしい時短技です。

以上、地味に使える小技のご紹介でした。ぜひご活用ください。