TL;DR — どんな数値も 2 つの事実を抱えています。どれだけ大きいか(大きさ)と どちらを向いているか(符号)です。
ABS(number)は大きさを残して向きを捨てます —ABS(-7)もABS(7)もどちらも7を返します。SIGN(number)はその逆で、向きを-1・0・+1として残し、大きさを捨てます。ABS の代表的な用途は、向きを気にせずに 比較することです — 許容差チェックは=ABS(A-B)<=tolであって、決して=A-B<=tolでは ありません。そして 2 つの関数は、きれいな 1 つの恒等式にまとまります。number = SIGN(number) * ABS(number)。
=ABS(-7) ' -> 7 大きさ:0 からの距離
=ABS(7) ' -> 7
=SIGN(-7) ' -> -1 向きだけ
=SIGN(0) ' -> 0 結果は 2 つではなく 3 つ
=ABS(Actual - Forecast) <= 0.05 * Forecast ' 5% 以内か?(向きは無視)
「差異が半分くらいの確率でマイナスになるのはなぜ?」「許容差以内のはずのテストが巨大な誤差を すり抜けさせる」— こうした悩みのほとんどは、たった 1 つの取り違えに行き着きます。本当に必要 だったのは数値の 大きさ なのに、その 値 に手を伸ばしてしまうのです。ABS と SIGN は、 その 2 つを意図的に切り分けるための関数です。
この記事で学べること
- 考え方の軸:数値は 大きさ × 向き である
- 許容差・差異チェックに
A-BではなくABS(A-B)が必要な理由 SIGNの本当の用途:分類とゼロ交差の検出- 恒等式
x = SIGN(x) * ABS(x)と、それが効いてくる場面 SIGN(0)=0が、必ず処理すべき 3 通り の結果である理由- ABS を 使うべきでない とき — 隠れた符号はバグかもしれない
考え方の軸:大きさ × 向き
数直線を思い浮かべてください。どんな数値も、互いに独立した 2 つのことで言い表せます。0 から
の距離(大きさ)と、0 のどちら側にあるか(向き)です。ABS は 1 つ目の問いに答えて 2 つ目を
忘れ、SIGN は 2 つ目に答えて 1 つ目を忘れます。
=ABS(-250) ' -> 250 「0 からどれだけ遠いか」— 250、向きは捨てる
=SIGN(-250) ' -> -1 「どちら向きか」— 負、大きさは捨てる
この 2 つの問いを切り分けておくこと、それがスキルのすべてです。「予測と実績の差はどれだけ 大きいか?」と問うた瞬間、欲しいのは大きさであり、符号はノイズです。「この口座は増えたか 減ったか?」と問うた瞬間、欲しいのは向きであり、大きさはノイズです。バグは、片方だけを求めて いる問いに対して、両方を混ぜ込んだ生の値を使ったときに起こります。
代表的な用途:許容差チェックには ABS が要る
これは、このページで最も重要なパターンです。2 つの数値がある許容差を超えて食い違ったときに 印を付けたい、とします。素朴なテストは、こっそり壊れています。
=IF(Actual - Forecast > 5, "off", "ok") ' バグ
=IF(ABS(Actual - Forecast) > 5, "off", "ok") ' 正しい
最初の版は 一方向の 誤差しか捉えません。Actual が Forecast を大きく 下回って 入って
くると、Actual - Forecast は大きな 負の 数になり、これは 5 より大きくないため、数値が
とんでもなくずれているのにチェックは「ok」と言い張ります。大きさを見たい差は ABS で
囲む必要があります。 気にしているのは差がどれだけ大きいかであって、どちらに傾いているかでは
ないからです。同じ理屈が平均絶対偏差を支えています — これは、自分自身で打ち消し合ってしまう
「平均誤差」よりもきれいなばらつきの指標です。
=SUMPRODUCT(ABS(data - AVERAGE(data))) / COUNT(data) ' 平均絶対偏差
ABS がなければ、正と負の偏差が打ち消し合って ≈0 になります — これはまさに、絶対値を
渡したときに SUMPRODUCT が避けるために作られている
落とし穴です。
SIGN の本当の用途:分類とゼロ交差の検出
SIGN は、どんな数値も 3 つのトークン — -1・0・+1 — のいずれかに畳み込みます。これに
より、コンパクトな分類器にも、変化の検出器にもなります。その存在を正当化する用途が 2 つ
あります。
=SIGN(Change) ' -1 減少 / 0 変化なし / +1 増加 を 1 列で
=IF(SIGN(B3) <> SIGN(B2), "crossed", "") ' 系列がゼロを跨いだ箇所に印
2 つ目が気の利いた使い方です。連続する行のあいだで符号が変わる ということは、系列が
ゼロを通り抜けたことを意味します — 価格が損益分岐点を跨ぐ、残高がマイナスに転じる、センサーの
読み取り値が極性を反転する、といった具合です。SIGN の値を比較すれば、AND(B2>0, B3<0) の
ようなややこしい曲芸なしにゼロ交差を捉えられます。SIGN は、向きを表す乗数の自然な相棒でも
あります。=Quantity * SIGN(Flow) は IF なしで +1/−1 を掛けます。
2 つを結ぶ恒等式
概念のすべてを 1 行に圧縮すると、こうなります。
number = SIGN(number) * ABS(number)
向き × 大きさで、元の数値が再構成されます。ただの豆知識に見えますが、値を部品から組み
立て直す 必要が出てくると効いてきます — 最も役立つのは、負の数の奇数乗根をとる場面です。
これは素のべき乗が拒む操作です(POWER & SQRT ガイドで説明する
とおり、=(-8)^(1/3) は #NUM! になります)。
=SIGN(-8) * ABS(-8)^(1/3) ' -> -2 負数の立方根、符号を保ったまま
累乗根は大きさに対して計算し(これは常に合法です)、元の符号をあとから貼り戻します。これが、 恒等式が値打ちを発揮するところです。
SIGN(0) = 0 は 3 通りの結果
SIGN を 2 択だと思い込まないでください。返しうる値は 3 つ あり、その 3 つ目 — ちょうど
ゼロの入力に対する 0 — こそが、手抜きコードを壊すものです。
=IF(SIGN(x) = 1, "up", "down") ' バグ:ちょうど 0 が「down」と誤ラベルされる
=IF(x > 0, "up", IF(x < 0, "down", "flat")) ' 3 通りすべてを処理
SIGN で分岐するなら 0 のケースを必ず織り込むか、あるいは素直に >0 / <0 で直接
比較しましょう。これは IS 関数 が教えるのと同じ規律です。
テストが実際に持つ結果の数に、分岐の数を合わせるのです。
ABS を使うべきでないとき
ABS はあまりに便利なので、人は反射的に差を囲んでしまいます — そして、そこで道具が隠蔽工作に
変わります。ABS は、向きが本当にどうでもよいとき のためのものです(許容差、距離、
大きさ)。差が 本来は 正であるべきなのに、「きれいにする」ために ABS をかぶせたら、
ロジックが逆になっている行をただ隠しただけです。赤字の数値を消すために ABS に手を伸ばすのは、
誰にも見えない形で間違ったモデルを世に出す道です。区別しておく価値のある、関連する 2 点を
挙げます。
- 負の値をゼロで下限打ちしたいなら、
ABS(x)ではなくMAX(x, 0)を使うこと。MAX(-5,0)は0、ABS(-5)は5です。意図が違います — 一方は切り詰め、もう一方は折り返します。 - 値を変えずに数値を正として 表示 したいなら(会計スタイル)、
ABSではなく 表示形式 を使うこと。ABSは格納された値そのものを変え ますが、表示形式は見た目を変えるだけです。並べ替えや計算は、本物の数値を見ます。
判断のポイント
まず問いを立て、それから関数を選びましょう。「差はどれだけ大きいか/どれだけ離れているか/
ばらつきはどれくらいか?」→ 大きさ → ABS。「どちらに動いたか/損か益か/交差したか?」→
向き → SIGN。「両方を組み合わせ直したい?」→ SIGN(x)*ABS(x) の恒等式。最も被害を防ぐ
たった 1 つの習慣は、予期しなかった符号を ABS で塗りつぶすのを拒むことです — 差がマイナスに
なって驚いたなら、囲む前にロジックを調べましょう。ABS は意図を表現するものであって、証拠を
握りつぶすものではありません。
ExcelMaster が役立つ場面
許容差のロジックは、見た目に反して微妙に間違えやすく、しかもそのバグはあらゆる正常系
テストを通過してしまいます。ExcelMaster に「実績が予測から 5% 以上ずれている行に印を
付けて」と伝えれば、ABS(Actual-Forecast) > 0.05*Forecast を書いてくれます — ABS が
きちんと入っているので、下振れも上振れも両方捉えられます。「増加/減少/変化なしを 1 列で」
と頼めば、損益分岐をこっそり誤ラベルする 2 択の IF ではなく、ゼロのケースを処理した SIGN
を使います。あなたが説明した意図を、そのまま書いてくれます — 数値がおかしくなって初めて気づく
はずだった符号の扱いまで含めて。
よくある質問
Excel で絶対値を求めるには?
=ABS(number) を使います。これは大きさ — 0 からの距離 — を返すので、=ABS(-7) も
=ABS(7) もどちらも 7 を返します。差の絶対値をとるときは、式全体を囲みます:=ABS(A2-B2)。
Excel で数値を正の値にするには?
=ABS(number) は符号を取り除いて、どんな数値も正にします。一方、負の 数だけをゼロに置き
換えたい(正の数はそのまま残したい)場合は =MAX(number, 0) を使います。そして、値を変えずに
負の数を正として 表示 したいだけなら、数式ではなく表示形式を適用しましょう。
Excel の SIGN 関数は何を返しますか?
=SIGN(number) は、数値が負なら -1、ちょうどゼロなら 0、正なら +1 を返します。向きだけ
を報告し、大きさは捨てます — 損益の分類や、系列がゼロを跨ぐ箇所(2 つのセルのあいだの符号の
変化)の検出に便利です。
Excel の ABS と SIGN の違いは何ですか?
ABS は数値の 大きさ を残して符号を落とし(ABS(-7)=7)、SIGN は 向き を
-1/0/+1 として残して大きさを落とします(SIGN(-7)=-1)。2 つを合わせると、恒等式
number = SIGN(number) * ABS(number) が成り立ちます。
Excel で 2 つの数値が許容差以内かを確認するには?
絶対 差を許容差と比較します:=ABS(A2-B2) <= tolerance。ABS なしの
=A2-B2 <= tolerance は一方向の誤差しか捉えず、大きな負の差を「許容差以内」として
すり抜けさせてしまいます。
検証環境
検証環境: Excel 365 (Windows 11) — 最終確認 2026-07-10。
関連ガイド: Excel POWER & SQRT · Excel EXP, LN & LOG · Excel SUMPRODUCT · Excel IS Functions
