![見出し画像](https://assets.st-note.com/production/uploads/images/129738042/rectangle_large_type_2_3c970028b837532aa5d493846c08f97e.png?width=1200)
Tableau でできる表現をGoogle スプレッドシートでもやってみた その4 △順位でフィルタ
前回の記事(その3)に引き続き、Tableau では簡単にできることをGoogle スプレッドシートでも実現できるのかを試してみます。
一体何のことやらわからん、という方は、このシリーズの最初の記事を読んでみてください。
Ord 1のQ4 の問題を解いてみる
DATA Saber のウェブサイト内の課題、
「1.HandsOn - Fundamental」の「設問」をクリックすると、
Tableau Public で公開されている問題ページを表示します。
![](https://assets.st-note.com/img/1706987895770-GCd50Xv3SF.png?width=1200)
画像出所:https://public.tableau.com/app/profile/data.saber/viz/1_HandsOn-Fundamental/1_HandsOn-Fundamental
この問題の中から、いくつかをTableau で解いた後で、Google スプレッドシートでも解いてみる、ということをしてみます。
Tableau で解いてみる
![](https://assets.st-note.com/img/1706987985227-iOqiGhCKVt.png?width=1200)
画像出所:https://public.tableau.com/app/profile/data.saber/viz/1_HandsOn-Fundamental/1_HandsOn-Fundamental
「行」に「オーダー ID」をドラッグ&ドロップ
「売上」をダブルクリック
(「テキスト」に売上をドラッグ&ドロップでも同じ)「オーダー ID」を「フィルター」の領域にドラッグ&ドロップ
フィルターを以下のように設定し「OK」をクリック
ランク:上位 10
フィールド:売上
集計:合計「売上」の合計が大きい順(降順)に「オーダー ID」を並べ替え
完成
![](https://assets.st-note.com/img/1706988238138-0HLvR5DztI.png?width=1200)
「売上」をダブルクリック
(「テキスト」に売上をドラッグ&ドロップでも同じ)
![](https://assets.st-note.com/img/1706988428670-RM8zGWJQ7a.png?width=1200)
![](https://assets.st-note.com/img/1706988478370-y9Rf6hp19Y.png?width=1200)
フィルターを設定し「OK」をクリック
![](https://assets.st-note.com/img/1706988642738-kUBWUkYhnq.png?width=1200)
まで、5手をもちまして、Tableau での実装となります。
Google スプレッドシートで解いてみる
Tableau ではほぼドラッグ&ドロップだけで実現できましたが、Google スプレッドシートのピボットテーブではどうでしょうか。やってみます。
データの範囲を広めに指定して
「挿入」>「ピボットテーブル」>新しいシート
ピボットテーブルエディタの「行」に「オーダー日」をドラッグ&ドロップ挿入されたピボットテーブルを切り取り、B1セル(あるいはもっと右の列のセル)に貼り付け
ピボットテーブルエディタの「行」に「オーダー ID」をドラッグ&ドロップ
ピボットテーブルエディタの「値」に「売上」をドラッグ&ドロップして、集計方法を「SUM」
「オーダー ID」を「降順」>「売上 のSUM」で並べ替え
A1セルに「ランク」と入力
A2セルに「売上の SUM」の順位を表示するため、関数を定義
=ArrayFormula(IF(C2:C<>"",RANK(C2:C,$C$2:$C$2819),""))表の範囲をクリックして「フィルタ」をクリック
A列のフィルタボタンをクリック
「条件でフィルタ」>「以下」>「10」
※ランク列の値が10以下の行だけが表示される
完成
![](https://assets.st-note.com/img/1706989233179-vl8A81R46w.png?width=1200)
ピボットテーブルを切り取り「B1」セルに貼り付け
行:「オーダー ID」
列:「売上」 集計方法:「SUM」
![](https://assets.st-note.com/img/1706989455356-KE1gwUiyAU.png)
![](https://assets.st-note.com/img/1706989522983-5mEZYE2q67.png)
![](https://assets.st-note.com/img/1706989641566-vjVb49zAkR.png?width=1200)
![](https://assets.st-note.com/img/1706989952270-FRbsTjWQRP.png?width=1200)
A2セルに「売上の SUM」の順位を表示するため、関数を定義=ArrayFormula(IF(C2:C<>"",RANK(C2:C,$C$2:$C$2819),""))
表の範囲をクリックして「フィルタ」をクリック
=ArrayFormula(IF(C2:C<>"",RANK(C2:C,$C$2:$C$2819),""))
![](https://assets.st-note.com/img/1706990010911-tLiDq4uNZ0.png?width=1200)
「条件でフィルタ」>「以下」>「10」
![](https://assets.st-note.com/img/1706990150596-UUitjWRSMC.png?width=1200)
まで、標準機能と関数合わせて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 スプレッドシートでもなんとかなるのか?という挑戦をしていきます。
この記事が気に入ったらサポートをしてみませんか?