売上の増減や在庫の過不足を一覧表で管理していると、正負の分類が必要になりますよね。
「この数値はプラス?マイナス?」をすばやく判定したい場面、ありませんか?
IF関数で条件分岐を書く方法もありますが、3パターン(正・負・ゼロ)を判定するにはIFのネストが必要です。ちょっと面倒ですよね。
そんなときに便利なのがSIGN関数です。数値を1つ渡すだけで、正なら「1」、負なら「-1」、ゼロなら「0」を返してくれます。
この記事では基本の書き方から、損益判定やABS関数との組み合わせまで紹介します。
SIGN関数とは?
SIGN関数(読み方: サイン関数)は、数値の符号(正・負・ゼロ)を判定する関数です。
名前は英語の「sign(符号・記号)」からきています。
正の数なら「1」、負の数なら「-1」、ゼロなら「0」を返します。数値の「大きさ」ではなく「方向」だけを取り出す関数ですね。
SIGN関数にできることをまとめると、次のとおりです。
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関数と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スプレッドシートで完全に同じ動作です。
| 項目 | Excel | Googleスプレッドシート |
|---|---|---|
| 構文 | =SIGN(数値) | =SIGN(値) |
| 動作 | 符号を判定する | 符号を判定する |
| 正の数 | 1 | 1 |
| 負の数 | -1 | -1 |
| ゼロ | 0 | 0 |
引数名の表記が若干異なるだけで、機能は完全に同じです。ファイルを共有しても判定結果はずれません。
まとめ
SIGN関数は、数値の符号(正・負・ゼロ)を判定するシンプルな関数です。
ポイントを整理します。
- 構文は
=SIGN(値)の1引数。正なら1、負なら-1、ゼロなら0を返す - 損益の方向分類や前月比の増減判定に使える
- ABS関数と対になる関数。ABS(x) x SIGN(x) = x で元の値を復元できる
- 符号を保持したまま端数を丸めるなど、ABS関数との組み合わせが実務で便利
- IF関数のネストよりシンプルに正負判定ができる
まずは =SIGN(A2) でセルの符号を判定するところから試してみてください。
