見出し画像

Tableau でできる表現をGoogle スプレッドシートでもやってみた その4 △順位でフィルタ

前回の記事(その3)に引き続き、Tableau では簡単にできることをGoogle スプレッドシートでも実現できるのかを試してみます。

一体何のことやらわからん、という方は、このシリーズの最初の記事を読んでみてください。

Ord 1のQ4 の問題を解いてみる

DATA Saber のウェブサイト内の課題、
「1.HandsOn - Fundamental」の「設問」をクリックすると、
Tableau Public で公開されている問題ページを表示します。

DATA Saber プログラムでの課題。
画像出所:https://public.tableau.com/app/profile/data.saber/viz/1_HandsOn-Fundamental/1_HandsOn-Fundamental

この問題の中から、いくつかをTableau で解いた後で、Google スプレッドシートでも解いてみる、ということをしてみます。

Tableau で解いてみる

DATA Saber プログラムでの課題。
画像出所:https://public.tableau.com/app/profile/data.saber/viz/1_HandsOn-Fundamental/1_HandsOn-Fundamental
  1. 「行」に「オーダー ID」をドラッグ&ドロップ

  2. 「売上」をダブルクリック
    (「テキスト」に売上をドラッグ&ドロップでも同じ)

  3. 「オーダー ID」を「フィルター」の領域にドラッグ&ドロップ

  4. フィルターを以下のように設定し「OK」をクリック
    ランク:上位 10
    フィールド:売上
    集計:合計

  5. 「売上」の合計が大きい順(降順)に「オーダー ID」を並べ替え

完成

「行」に「オーダー ID」をドラッグ&ドロップ
「売上」をダブルクリック
(「テキスト」に売上をドラッグ&ドロップでも同じ)
「オーダー ID」を「フィルター」の領域にドラッグ&ドロップ
「オーダー ID」を「フィルター」の領域にドラッグ&ドロップ
フィルターを設定し「OK」をクリック
「売上」の合計が大きい順(降順)に「オーダー ID」を並べ替え

まで、5手をもちまして、Tableau での実装となります。

Google スプレッドシートで解いてみる

Tableau ではほぼドラッグ&ドロップだけで実現できましたが、Google スプレッドシートのピボットテーブではどうでしょうか。やってみます。

  1. データの範囲を広めに指定して
    「挿入」>「ピボットテーブル」>新しいシート
    ピボットテーブルエディタの「行」に「オーダー日」をドラッグ&ドロップ

  2. 挿入されたピボットテーブルを切り取り、B1セル(あるいはもっと右の列のセル)に貼り付け

  3. ピボットテーブルエディタの「行」に「オーダー ID」をドラッグ&ドロップ

  4. ピボットテーブルエディタの「値」に「売上」をドラッグ&ドロップして、集計方法を「SUM」

  5. 「オーダー ID」を「降順」>「売上 のSUM」で並べ替え

  6. A1セルに「ランク」と入力
    A2セルに「売上の SUM」の順位を表示するため、関数を定義
    =ArrayFormula(IF(C2:C<>"",RANK(C2:C,$C$2:$C$2819),""))

  7. 表の範囲をクリックして「フィルタ」をクリック

  8. A列のフィルタボタンをクリック
    「条件でフィルタ」>「以下」>「10」
    ※ランク列の値が10以下の行だけが表示される

完成

ピボットテーブルを挿入
ピボットテーブルを切り取り「B1」セルに貼り付け
行:「オーダー ID」
列:「売上」 集計方法:「SUM」
Google スプレッドシートのピボットテーブルの集計方法では「ランク」を求められない
Google スプレッドシートのピボットテーブルの「フィルタ」機能では、順位を指定した抽出ができない
「オーダー ID」を「降順」>「売上 のSUM」で並べ替え
A1セルに「ランク」と入力
A2セルに「売上の SUM」の順位を表示するため、関数を定義=ArrayFormula(IF(C2:C<>"",RANK(C2:C,$C$2:$C$2819),""))
表の範囲をクリックして「フィルタ」をクリック
=ArrayFormula(IF(C2:C<>"",RANK(C2:C,$C$2:$C$2819),""))
A列のフィルタボタンをクリック
「条件でフィルタ」>「以下」>「10」
ランク列の値が10以下の行だけが表示される

まで、標準機能と関数合わせて8手によるGoogle スプレッドシートでの実装となります。

集計方法にランクがない、順位をフィルタできない。Google スプレッドシートの標準機能だけでは実現できない。

設問で問われている、売上トップ10の「オーダー ID」を抽出するための操作は、基本機能だけではTableau だと簡単にできて、Google スプレッドシートのピボットテーブルの標準機能だけでは実現不可能でした。

ピボットテーブルでの集計結果に対して順位を表示できるようにRANK 関数を、そしてソースデータが増減してもシート内で不具合が起こらないようにARRAYFORMULA 関数を使用することで、ランクが10以下という条件でのデータの抽出ができます。

=ArrayFormula(IF(C2:C<>"",RANK(C2:C,$C$2:$C$2819),""))

Tableau ではマウスでのクリックやドラッグ&ドロップで標準機能を使用するだけで実現できることが、Google スプレッドシートでは関数を駆使したりフィルタの機能を詳しく理解していないと実現できません。
Google スプレッドシートの関数にどのようなものがあるかを広く理解していたり探求したりするスキルがないと、高度な分析やグラフ化といったBI(ビジネスインテリジェンス)を実現するのは難しいかもしれませんね。

引き続き、このシリーズではDATA Saber の課題にGoogle スプレッドシートでも取り組んでみて、Google スプレッドシートでもなんとかなるのか?という挑戦をしていきます。

この記事が気に入ったらサポートをしてみませんか?