前年比や増減率をTableauで可視化しようとしたとき、「前年がマイナス」「黒字化しているのにマイナス成長になる」といったケースに遭遇したことはありませんか?
たとえば、前年が−100万円、今年が+50万円という利益の推移があった場合、通常の計算式では(50−(−100))÷(−100)=−150%となってしまいます。
実際には黒字転換しているにも関わらず、「前年比マイナス成長」と誤認される恐れがあり、正しく評価されません。こうした矛盾を解消するために重要な役割を果たすのが ABS関数(絶対値関数) です。
TableauのABS関数とは?前年比で必要な理由を解説
ABS関数は “absolute(絶対的な)” の略で、数値の絶対値、つまり「0からの距離」を返す関数です。マイナス記号を取り除き、数値の大きさだけを扱います。
ABS(−5) → 5
TableauでもExcelでも同様に ABS(数値)
の形式で使用します。
SUM(ABS(...))
と ABS(SUM(...))
の違い
これはTableauでもよくある罠です。
計算式 | 意味 | 用途 |
---|---|---|
SUM(ABS([利益])) | 各レコードの利益の絶対値を合計 | 赤字・黒字問わずの活動量計測 |
ABS(SUM([利益])) | 全体の利益の合計を絶対値で | 純粋な損益傾向を測る |
意味が全く異なるので注意が必要です。
なぜ分母にABSを使うと「黒字化がマイナス成長」にならないのか
前年 −100、今年 +50 という改善があっても、通常の前年比計算では:
(今年 − 前年) ÷ 前年 = (50 − (−100)) ÷ (−100) = −150%
このように「増加したのにマイナス成長」と表示されてしまいます。これは分母がマイナスであるために、結果の符号が反転してしまうからです。
視覚的なイメージとしては、数直線上でマイナス側からプラス側へジャンプしているのに、グラフ上では“下降”のように見えてしまう──そんな誤解です。
解決策:分母にABS関数を使う
(今年 − 前年) ÷ ABS(前年)
分母の符号を絶対値に変えることで、意図せぬマイナス表示を防ぐことができます。
前年 | 今年 | 通常の前年比 | ABS使用後 |
---|---|---|---|
−100 | 50 | −150% | 150% |
−300 | −150 | −50% | 50% |
年度別比較におけるメリット
前年比だけでなく、前々年比、半期比、3年平均成長率(CAGR)などの計算でも、分母が負の値を取る場合はABSを使うことで一貫性のある評価が可能になります。
また、赤字が連続する業績推移でも、「縮小幅=成長」として表現できるようになります。
さらに、CAGR(年平均成長率)を計算する場合にも、初期値がマイナスだと指標として破綻する恐れがあります。ABSで初期値を補正することで、一定の整合性を保てます(※理論的には注意が必要)。
なお、ABSを適用すべきでないケースも存在します。たとえば、「成長率」ではなく「利益率」のように符号の持つ意味そのものが重要な指標では、ABSを使うと逆に誤解を生むことがあります。文脈に応じた使い分けが必要です。
TableauでのABS関数の実務使用例
例1:基本の前年比(利益) // 担当者別に利益を比較
(ZN(SUM([利益])) - LOOKUP(ZN(SUM([利益])), -1)) / ABS(LOOKUP(ZN(SUM([利益])), -1))
LOOKUP()
:前期間の値を取得ZN()
:NULLを0として扱うABS()
:符号の影響を除去
黒字・赤字・欠損データが混在しても、安定した前年比を算出可能です。
例2:前年ゼロのときは空白にする // 除算エラーを防止
IF ABS(LOOKUP(SUM([利益]), -1)) = 0 THEN NULL ELSE
(SUM([利益]) - LOOKUP(SUM([利益]), -1)) / ABS(LOOKUP(SUM([利益]), -1))
END
前年がゼロの場合に除算エラー(#DIV/0!)が出るのを防ぐ構文です。実務では「前年なし」は「前年比なし」とみなすのが一般的です。
例3:FIXEDとABSの組み合わせ // 粒度を制御しつつ前年比を算出
(SUM([利益]) - LOOKUP(SUM([利益]), -1)) /
ABS({ FIXED [担当者名] : LOOKUP(SUM([利益]), -1) })
担当者単位やカテゴリ単位でデータ粒度をロックする場合、FIXEDとの併用が強力です。これにより、全体ビューと担当者別比較が同じ計算ロジックで実装できます。
例4:IFやCASEと組み合わせた分類的な可視化 // 改善/悪化を分ける
IF (SUM([利益]) - LOOKUP(SUM([利益]), -1)) / ABS(LOOKUP(SUM([利益]), -1)) > 0 THEN "改善" ELSE "悪化" END
数値をそのまま表示するのではなく、「改善/悪化」として視覚的に分類することで、より分かりやすいダッシュボード設計が可能になります。
例5:KPI寄与度分析におけるABS活用 // 部門別貢献度を可視化
SUM(ABS([利益差分])) / SUM(ABS([全体利益差分]))
赤字の削減幅や改善率を各施策や部門別にABSで数値化し、「どの要素が全体改善にどれだけ貢献したか」を可視化する使い方も有効です。
【FAQ】前年比がマイナスになる原因とABS関数での対処法
- 赤字 → 黒字:前年比がマイナスになる → ABSで150%などと表示(自然な表現)
- 赤字 → 赤字(縮小):通常の前年比は−x% → ABSでプラス成長として評価可
- 前年ゼロ:除算エラーが発生 → IFまたはIFERRORで補完(空欄など)
- 前年比の誤解を避けたい:前年比の意味を正しく伝えるには絶対値処理が必須
- 部署・地域単位の比較:FIXED LOD + ABSを併用し、粒度の違いを吸収
- 損失削減効果を強調したい:赤字縮小を「改善」として評価する方針が有効
Tableauで前年比が異常値になる?よくある検索理由と対策
「前年がマイナスなのに、黒字になってもマイナス成長と表示される」「前年比が突然−300%と出る」といった違和感、あなたも経験ありませんか?
多くの人が検索する「前年比 マイナスからプラス」や「前年比 計算 マイナスからマイナス」といったキーワードは、こうした “数字が伝わらない”ことへの悩み から生まれています。
その原因は、前年比計算における分母がマイナス値になっているためです。
(今年 - 前年) / 前年
→ 50 - (−100) / −100 = −150%
この矛盾を解決するのがABS関数です。
(今年 - 前年) / ABS(前年)
→ 150%
“損失の縮小も改善”として伝えられるABS関数は、読み手と作り手の誤解を防ぐための強力な方法なのです。
結論:ABS関数は“誤解のない数字表現”のためにある
ABSはただの数学関数ではなく、「読み手が正しく理解できる数字を作る」ための手段です。
- 黒字転換をマイナスと表示させない
- 赤字の縮小を正しく伝える
- ゼロやNULLでも安定した計算式を組める
- FIXEDやLOOKUPと組み合わせることで多様な粒度に対応できる
- KPI寄与度やCAGRなどの分析に応用できる
- 不適切な適用を避け、指標ごとに慎重に使い分ける判断力が求められる
Tableauのような可視化ツールでは、「正しく計算する」だけでなく、「正しく伝える」ことが重要です。ABS関数はその一歩を担ってくれる存在です。
Comment