スプレッドシートのSIGN関数の使い方|正負判定

スポンサーリンク

売上の増減や在庫の過不足を一覧表で管理していると、正負の分類が必要になりますよね。

「この数値はプラス?マイナス?」をすばやく判定したい場面、ありませんか?

IF関数で条件分岐を書く方法もありますが、3パターン(正・負・ゼロ)を判定するにはIFのネストが必要です。ちょっと面倒ですよね。

そんなときに便利なのがSIGN関数です。数値を1つ渡すだけで、正なら「1」、負なら「-1」、ゼロなら「0」を返してくれます。

この記事では基本の書き方から、損益判定やABS関数との組み合わせまで紹介します。

SIGN関数とは?

SIGN関数(読み方: サイン関数)は、数値の符号(正・負・ゼロ)を判定する関数です。

名前は英語の「sign(符号・記号)」からきています。

正の数なら「1」、負の数なら「-1」、ゼロなら「0」を返します。数値の「大きさ」ではなく「方向」だけを取り出す関数ですね。

SIGN関数にできることをまとめると、次のとおりです。

  • 数値が正・負・ゼロのどれかを判定する
  • 売上や利益の増減方向を分類する
  • ABS関数と組み合わせて「大きさ」と「方向」を分離する
  • IF関数のネストを使わずに3パターンの符号判定を1つの関数で行う

NOTE

SIGN関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。

SIGN関数の書き方(構文と引数)

基本構文

=SIGN(値)

カッコの中に「符号を判定したい数値」を1つ入れるだけです。

引数の説明

引数必須/任意説明
必須符号を判定したい数値やセル参照、数式

引数は1つだけです。結果は必ず「1」「-1」「0」のいずれかになります。

SIGN関数の基本的な使い方

正の数を判定する

=SIGN(10)

結果は「1」です。正の数はすべて「1」を返します。

=SIGN(0.5)

結果は「1」です。小数でも正の数なら「1」です。

負の数を判定する

=SIGN(-10)

結果は「-1」です。負の数はすべて「-1」を返します。

=SIGN(-0.001)

結果は「-1」です。どれだけ小さなマイナスでも「-1」です。

ゼロを判定する

=SIGN(0)

結果は「0」です。ゼロはプラスでもマイナスでもないので「0」を返します。

まとめると

数式結果意味
=SIGN(100)1正の数
=SIGN(-50)-1負の数
=SIGN(0)0ゼロ
=SIGN(3.14)1正の小数
=SIGN(-0.5)-1負の小数

セル参照を使う

実務ではセル参照を使うケースがほとんどです。A2セルに数値が入っているとします。

=SIGN(A2)

セル参照にしておけば、値が変わっても自動で判定結果が更新されます。

数式の結果に使う

他の計算結果の符号を判定することもできます。

=SIGN(B2-C2)

B2が「80」、C2が「100」なら「80-100=-20」です。SIGN関数で「-1」が返ります。

実務でのSIGN関数活用例

損益の方向を自動分類する

月ごとの損益を「黒字」「赤字」「収支ゼロ」に分類するパターンです。B2セルに損益額が入っているとします。

=IF(SIGN(B2)=1, "黒字", IF(SIGN(B2)=-1, "赤字", "収支ゼロ"))

SIGN関数の結果(1, -1, 0)をIF関数で判定して、ラベルを付けています。

TIP

IF関数だけで書くと =IF(B2>0, "黒字", IF(B2<0, "赤字", "収支ゼロ")) です。この場合はIF関数のほうがシンプルですね。SIGN関数の真価は、次に紹介するABS関数との組み合わせや、数値計算に符号を活用する場面で発揮されます。

前月比の増減方向を表示する

売上の前月比をもとに「増加」「減少」「変動なし」を表示するパターンです。

=CHOOSE(SIGN(C2-B2)+2, "減少", "変動なし", "増加")

SIGN関数の結果は-1, 0, 1のいずれかです。2を足すと1, 2, 3になります。

CHOOSE関数で1番目="減少"、2番目="変動なし"、3番目="増加"と対応させています。

IF関数のネストよりもスッキリ書けるのがポイントです。

符号に応じた矢印記号を付ける

数値の横に矢印を付けて視覚的にわかりやすくするパターンです。

=CHOOSE(SIGN(A2)+2, "▼", "−", "▲")

正の数なら「▲」、負の数なら「▼」、ゼロなら「−」が表示されます。ダッシュボードや報告資料で使うと見やすくなります。

条件付き集計で符号ごとに分ける

正の値だけ・負の値だけを合計したいときのパターンです。

=SUMPRODUCT((SIGN(B2:B10)=1)*B2:B10)

SIGN関数で正の値(SIGN=1)だけを抽出し、合計を求めています。

負の値だけを合計するなら次のように書きます。

=SUMPRODUCT((SIGN(B2:B10)=-1)*B2:B10)

SIGN関数とABS関数の関係

SIGN関数とABS関数は対になる関数です。

  • SIGN関数: 数値の「方向」(符号)を取り出す
  • ABS関数: 数値の「大きさ」(絶対値)を取り出す

この2つを掛け合わせると、元の数値を復元できます。

=ABS(-15) * SIGN(-15)

ABS(-15)は「15」、SIGN(-15)は「-1」です。15 x (-1) = -15 で元の値に戻りますね。

この関係を使うと「大きさだけを加工して、符号は元のまま」という処理ができます。

符号を保持したまま端数を丸める

金額の端数を丸めつつ、プラス・マイナスの符号はそのまま残したいケースです。

=SIGN(A2) * ROUNDDOWN(ABS(A2), -2)

A2が「-1,234」の場合、ABS(A2)で「1,234」にしてから百の位で切り捨てて「1,200」。SIGN(A2)の「-1」を掛けて「-1,200」になります。

正の数「1,234」の場合も同じ式で「1,200」です。符号に関係なく同じ丸め処理が適用されるのがポイントです。

符号を保持したまま上限を設定する

値に上限を設けつつ、符号はそのまま残したいケースです。

=SIGN(A2) * MIN(ABS(A2), 1000)

A2が「-1,500」なら、ABS(A2)で「1,500」。MIN関数で上限1,000に制限して「1,000」。SIGN(A2)の「-1」を掛けて「-1,000」になります。

よくあるエラーと対処法

SIGN関数は引数1つのシンプルな関数ですが、エラーが出ることもあります。

エラー原因対処法
#VALUE!値に文字列が入っているセル参照先が数値かどうか確認する
#ERROR!構文ミス(カッコ忘れ等)数式の入力内容を見直す
常に0が返る空白セルを参照している空白セルは0として扱われるため正常動作

文字列が混在しているとき

SIGN関数に文字列を渡すと#VALUE!エラーです。

=SIGN("abc")

セル参照先が数値かどうか不安なときは、ISNUMBER関数で事前にチェックできます。

=IF(ISNUMBER(A1), SIGN(A1), "数値を入力してください")

空白セルを渡したとき

SIGN関数に空白セルを渡すと「0」が返ります。これは空白セルが数値の「0」として扱われるためです。

データが未入力なのか本当にゼロなのかを区別したい場合は、次のように書きます。

=IF(A1="", "未入力", SIGN(A1))

似た関数との違い・使い分け

関数動作引数戻り値
SIGN符号を判定する1つ1, 0, -1 のいずれか
ABS絶対値を返す1つ常に0以上の数値
IF条件で分岐する3つ条件に応じた値
N値を数値に変換する1つ数値

SIGN関数とIF関数の使い分け

SIGN関数の結果は、IF関数で書くと次のようになります。

=IF(A1>0, 1, IF(A1<0, -1, 0))

この式は =SIGN(A1) と同じ結果です。

ラベル(「黒字」「赤字」等)を付けたい場合はIF関数を使います。符号の数値(1, -1, 0)をそのまま計算に使いたい場合はSIGN関数が便利です。

SIGN関数とABS関数の使い分け

ABS関数は「大きさ」、SIGN関数は「方向」を取り出します。

=ABS(-5)   → 5(大きさ)
=SIGN(-5)  → -1(方向)

「大きさだけ知りたい」ならABS関数、「方向だけ知りたい」ならSIGN関数です。両方組み合わせれば元の値を復元できます。

Excelとの違い

SIGN関数はExcelとGoogleスプレッドシートで完全に同じ動作です。

項目ExcelGoogleスプレッドシート
構文=SIGN(数値)=SIGN(値)
動作符号を判定する符号を判定する
正の数11
負の数-1-1
ゼロ00

引数名の表記が若干異なるだけで、機能は完全に同じです。ファイルを共有しても判定結果はずれません。

まとめ

SIGN関数は、数値の符号(正・負・ゼロ)を判定するシンプルな関数です。

ポイントを整理します。

  • 構文は =SIGN(値) の1引数。正なら1、負なら-1、ゼロなら0を返す
  • 損益の方向分類や前月比の増減判定に使える
  • ABS関数と対になる関数。ABS(x) x SIGN(x) = x で元の値を復元できる
  • 符号を保持したまま端数を丸めるなど、ABS関数との組み合わせが実務で便利
  • IF関数のネストよりシンプルに正負判定ができる

まずは =SIGN(A2) でセルの符号を判定するところから試してみてください。

タイトルとURLをコピーしました