Tableauで「前年比を出したい」「前月比を見たい」と思って計算式を組んでみたものの、値がズレる・NULLになる・うまく比較できない——。
そんな経験はありませんか?
この記事では、「なぜうまく出せないのか?」という根本的な問いから出発し、Tableauで前年比・前月比・増減率(YoY / MoM / 成長率)を正しく算出する方法を、失敗例・対処法・応用事例まで含めて解説します。
なぜ前年比がうまく出せないのか?
多くの人が陥るのは、LOOKUP関数で前年を参照しようとして、意図した行を取れていないというケースです。たとえばこの式:
LOOKUP(ZN(SUM([売上])),-1)
確かに「1つ前の値」を取りますが、**“何に対して1つ前か”は表計算の設定で決まります。**つまり、ここがズレているとまったく意味のない比較になってしまいます。
※ 表計算適用中のマークがポイント
「前年」か「前月」かを決めるのは“表計算の粒度”
LOOKUP関数は直前の行を見るだけです。
「それが前年なのか、前月なのか」は、表計算の粒度設定で決まります。
※ 比較単位を明示しなければ意図通りに動かない
具体的には:
- 年単位で集計していれば → 前年比(YoY)
- 月単位で集計していれば → 前月比(MoM)
- 日単位で集計していれば → 前日比(DoD)
並び順にも要注意です。降順にすると「前年」ではなく「翌年」を取ってしまいます。

1. 前年比(YoY)を算出する:基本式とその意味
前年比は、「前年と比較してどれだけ達成したか」を測る指標です。売上やKPIなど、ほぼすべてのビジネス指標で使われます。
ZN(SUM([売上])) / LOOKUP(ZN(SUM([売上])), -1)
Tableau上でこの式を使い、パーセント表示に設定すれば完了です。

よくあるユースケース:
- 月別売上と前年同月比を重ねて表示(棒グラフ+折れ線)
- KPIダッシュボードで前年比を信号色(赤・緑)で表示
2. 増減率(成長率)との違いとその出し方
前年比と混同しやすいのが「増減率(成長率)」です。
指標 | 計算式 | 意味 |
---|---|---|
前年比 | 今年 ÷ 昨年 | 達成率を測る |
増減率 | (今年 − 昨年)÷ 昨年 | 成長の割合 |
安全な式はこちら:
(ZN(SUM([売上])) - LOOKUP(ZN(SUM([売上])), -1)) / ABS(LOOKUP(ZN(SUM([売上])), -1))
成長率のユースケース:
- 部門別の売上成長率をランキング形式で可視化
- 増加率が高い順に並び替えて注目カテゴリを把握
3. 前月比(MoM)を出すには?
前月比は「今月の数値が前月と比べてどうか」を見る指標。
計算式自体は前年比と同じですが、粒度設定を「月」にするだけでMoMになります。
ZN(SUM([売上])) / LOOKUP(ZN(SUM([売上])), -1)
MoMのユースケース:
- ECサイトの月次売上で、前月比がマイナスのカテゴリを赤表示
- 前月比20%以上の増加を検知してSlack通知
4. よくあるエラーとその対処法
- 表の並び順が逆 → 「前年」ではなく「翌年」を取ってしまう
- NULLを除外していない → 割り算エラーになる
- 日付が連続で並んでいない → 正しい比較ができない
対策まとめ:
ZN()
でNULLを0にするABS()
で割り算を保護する- 粒度設定と並び順を毎回確認する癖をつける
5. 応用Tips:Tableauで比較分析をもっと柔軟に
IF LOOKUP(...) > 1 THEN '成長' ELSE '減少' END
:成長・減少で色分けWINDOW_SUM
と組み合わせて3ヶ月前対比パラメータ
で「前年比 / 前月比 / 前週比」などをユーザーに選ばせる
6. ダッシュボード応用例:実践シナリオで学ぶ
マーケティング部門向け:
- KPIを「当月売上」「前月比」「前年同月比」で3指標並列表示
- カテゴリ別フィルターで深掘り分析
- 月次会議でそのまま使えるレポートに最適化
経営層向け:
- 棒グラフで実数表示+折れ線でYoY達成率を重ねる
- 達成率80%未満に赤マークを付与
- フィルターやパラメータで「今期/昨期」の範囲切替可能
7. INDEX・PREVIOUS_VALUEとの違い
関数名 | 特徴 | よく使う場面 |
---|---|---|
LOOKUP | 任意のオフセットで前行・次行を参照 | 前年比・前月比・比較分析 |
INDEX | 現在の行番号(1,2,3…)を返す | ランキングや並び順制御 |
PREVIOUS_VALUE | 直前に返した値を記憶して使用 | 累積・差分計算などのステップ演算 |
前年比や前月比には、必ずLOOKUPを使うのが基本です。INDEXやPREVIOUS_VALUEでは目的に合いません。
8. FIXEDとの違い:LOD表現との使い分け
TableauにはLOOKUPのような表計算関数とは別に、FIXED
を使ったLOD(Level of Detail)表現もあります。これらの違いを正しく理解することで、より柔軟で堅牢な分析が可能になります。
比較項目 | LOOKUP関数 | FIXED LOD式 |
---|---|---|
処理タイミング | 表計算フェーズ(表示後) | 集計フェーズ(表示前) |
相対位置参照 | 可能(-1行前など) | 不可(固定集計のみ) |
フィルターの影響 | 表に表示されているデータに依存 | FIXEDはフィルターの影響を受けない(計算順により) |
用途 | 前月/前年比較、時系列比較など | セグメント集計、ユーザー単位のKPI固定など |
LOOKUPは**「表示順に依存する計算」、FIXEDは「集計ロジックを固定したいとき」**に使うのが基本方針です。
LOOKUPは強力な関数ですが、表計算設定とワンセットで使ってこそ意味があるものです。
繰り返しになりますが、ポイントは:
- 粒度(年・月・日)を明確に設定
- 並び順を昇順に固定
- NULL処理と安全な除算を組み合わせる
これさえ守れば、Tableauでの時系列比較は完全にマスターできます。
Comment