スプレッドシートで数値の符号を反転したいとき、多くの人は =-A1 のように単項マイナス演算子を使うはずです。実は Google スプレッドシートには、符号反転専用の UMINUS関数 という関数も用意されています。
「演算子で書けるのに、わざわざ関数?」と思うかもしれません。ただ ARRAYFORMULA や Apps Script を使う場面では、関数として書ける方が便利なこともあるんですよ。
この記事では、スプレッドシートのUMINUS関数の構文・使い方を解説します。単項マイナス演算子との違い、ABS関数との使い分け、ARRAYFORMULAとの組み合わせまで、実例つきでまとめました。
スプレッドシートのUMINUS関数とは?
スプレッドシートのUMINUS関数は、引数として渡された数値の 符号を反転 して返す関数です。=-A1 と書く代わりに =UMINUS(A1) と書けます。
UMINUS は Unary MINUS(単項マイナス)の略で、「ユーマイナス」と読みます。単項マイナスとは、-A1 のように1つの値の前につけるマイナス記号のことです。
実は UMINUS関数は Google スプレッドシート固有の関数で、Microsoft Excel には存在しません。「Excelからスプレッドシートに移ってきて初めて知った」という方も多いのではないでしょうか。
スプレッドシートには UMINUS の仲間として、UPLUS(そのまま返す)や UNARY_PERCENT(100で割る)があります。これらは 単項演算子関数 と呼ばれ、引数を1つだけ取るのが特徴です。それぞれ +A1 -A1 A1% の演算子と同じ結果を返しますが、関数として書きたい場面で活躍しますよ。
UMINUS関数の構文と引数
UMINUS関数の構文はとてもシンプルです。
=UMINUS(value)
引数は次の1つだけです。
| 引数 | 必須 | 内容 |
|---|---|---|
| value | 必須 | 符号を反転したい数値、または数値を返すセル参照 |
戻り値は -value の結果です。value が正なら負、負なら正、0 はそのまま 0 が返ります。MINUS関数のように2つの値を引き算するわけではない点に注意してください。
なお、引数はスカラー値(単一の値)のみ対応で、A1:A10 のようなセル範囲を直接渡すことはできません。範囲指定をしたい場合は次に紹介する ARRAYFORMULA との組み合わせが必要です。
UMINUS関数の基本的な使い方
実際のサンプルで動きを見ていきましょう。
例1: 正数を負数に変える
| 行 | A: 入力値 | B: 反転値 |
|---|---|---|
| 2 | 100 | =UMINUS(A2) |
| 3 | 250 | =UMINUS(A3) |
| 4 | 1500 | =UMINUS(A4) |
B2 の結果は -100、B3 は -250、B4 は -1500 になります。=-A2 と書いても同じ結果ですよ。
例2: 負数を正数に変える
入力値が負数のときは、反転した結果が正数になります。
=UMINUS(-50) → 50
=UMINUS(-1200) → 1200
「負数を正数に戻したい」だけなら ABS関数も同じ結果を返します。違いについては後ほど整理しますね。
例3: 経費を正数で入力して符号反転で表示する
経費を入力者は正数で入力しておき、収支表に表示するときだけマイナス値に変える運用です。
| 行 | A: 項目 | B: 金額(入力) | C: 表示用 |
|---|---|---|---|
| 2 | 交通費 | 1500 | =UMINUS(B2) |
| 3 | 会議費 | 8000 | =UMINUS(B3) |
| 4 | 通信費 | 3200 | =UMINUS(B4) |
C2 は -1500、C3 は -8000、C4 は -3200 になります。入力者は正数だけ意識すればよくて、表示用の符号は数式が自動で付けてくれるんですね。
例4: 0 や空白を渡したとき
=UMINUS(0) → 0
=UMINUS("") → 0
0 や空白セルを渡しても、エラーにはならず 0 が返ります。集計の中で安全に使える挙動ですよ。
UMINUS関数と単項マイナス演算子(-)の違い
「結局、=-A1 と書くのと何が違うの?」という疑問はもっともです。両者を比較してみましょう。
| 観点 | 演算子 - | UMINUS関数 |
|---|---|---|
| 記述の長さ | 短い(=-A1) | やや長い(=UMINUS(A1)) |
| 引数の数 | 1(前置) | 1(固定) |
| ARRAYFORMULA | 使える | 使える |
| Apps Script から数式生成 | 文字列結合がやや手間 | 関数呼び出しで読みやすい |
| 関数として明示 | できない | できる |
| Excel との互換性 | 互換あり | Excel 非対応 |
| 一般的な使用頻度 | 高い | 低い |
普段の手入力では - 演算子の方が短くて速いです。UMINUS関数が活きるのは、Apps Script や API で数式文字列を組み立てる場面ですね。あとは「ここで符号反転している」と関数名で明示したい場面にも向いています。
たとえば Apps Script から数式をセットする場面を考えてみましょう。"=-" + cellRef と文字列を連結するより、"=UMINUS(" + cellRef + ")" と書く方が後から読みやすい場合もありますよ。
UMINUS関数とABS関数の違い
UMINUS関数と混同されやすいのが ABS関数(絶対値) です。両方とも「マイナスの数を扱う関数」ですが、動きはまったく違います。
| 比較 | UMINUS(5) | UMINUS(-3) | ABS(5) | ABS(-3) |
|---|---|---|---|---|
| 結果 | -5 | 3 | 5 | 3 |
| 動作 | 符号を反転 | 符号を反転 | 絶対値(正にする) | 絶対値(正にする) |
整理するとこうです。
- UMINUS: 入力の符号を入れ替える(正→負、負→正)
- ABS: 入力の符号にかかわらず常に正の値を返す
「マイナスにしたい」だけが目的なら UMINUS、「正の値にしたい」が目的なら ABS。覚え方としては、「UMINUS だから常にマイナス側に動く」ではなく「符号を反転 する」と捉えるのが正確です。負数を渡せば正数が返ってきますからね。
実務でよく出てくるのは、「経費の絶対値で集計したい」ときの ABS、「収支表でマイナス表示にしたい」ときの UMINUS という使い分けです。
単項演算子関数シリーズ(UPLUS / UMINUS / UNARY_PERCENT)
UMINUS関数は、Google スプレッドシートに用意された3つの単項演算子関数のひとつです。残り2つもセットで覚えておくと便利です。
| 関数 | 演算子 | 構文 | 結果 |
|---|---|---|---|
| UPLUS | +(前置) | UPLUS(value) | value をそのまま返す |
| UMINUS | -(前置) | UMINUS(value) | value の符号を反転 |
| UNARY_PERCENT | %(後置) | UNARY_PERCENT(value) | value ÷ 100 |
すべて引数は1つだけ、という共通仕様です。
UPLUS関数は値をそのまま返すだけで、一見すると無意味に思えるかもしれません。ただ Apps Script で数式を組み立てるときに「明示的に数値として扱う」目的で使われることがあります。
UNARY_PERCENT関数は % 演算子と同じで、UNARY_PERCENT(50) は 0.5 を返します。50% と入力するのと同じ結果ですね。
なお、引数を2つ取る 算術演算子関数 には ADD / MINUS / MULTIPLY / DIVIDE があります。こちらもあわせて覚えておくと、スプレッドシートの演算子関数の全体像が見えてきますよ。
ARRAYFORMULAとの組み合わせ
複数行で同じ符号反転を繰り返したいとき、ARRAYFORMULA と組み合わせると 1セルだけで全行に展開できます。
演算子版
=ARRAYFORMULA(-A2:A100)
関数版
=ARRAYFORMULA(UMINUS(A2:A100))
どちらも同じ結果ですが、関数版は「符号反転している」と関数名で明示できる利点があります。複雑な式の中にネストする際、読みやすい場合がありますよ。
空白セルを除外したいとき
何も入力されていない行まで 0 と表示されると見た目が悪いですよね。IF関数と組み合わせて、空白行は何も表示しないようにしましょう。
=ARRAYFORMULA(IF(A2:A="", "", UMINUS(A2:A)))
これで A 列が空白の行は何も表示されず、入力済みの行だけ符号反転の結果が出るようになります。
ExcelにUMINUS関数はある?
結論からいうと、Microsoft Excel には UMINUS という名前の関数は存在しません。
Excel で符号反転を関数で書きたい場合、選択肢は限られます。素直に - 演算子を使うか、-1 を掛ける(=A1*-1)のが一般的です。
「Excel と同じ感覚でスプレッドシートに =-A1 と書けば良いのでは?」と思うかもしれません。それで全く問題ありません。UMINUS関数は Google スプレッドシートが用意した「単項マイナス演算子の関数版」という位置付けです。Apps Script や API との連携を意識して整備されたものなんです。
ですから、Excel ファイルとして .xlsx で書き出す予定がある場合は注意が必要です。UMINUS関数ではなく - 演算子で書いておく方が安全ですよ。Excel で開いたとき、UMINUS は #NAME? エラーになってしまいます。
よくあるエラーと対処法
UMINUS関数で遭遇しやすいエラーをまとめておきます。
#VALUE! エラー
引数に数値として解釈できない文字列が入っているときに発生します。
=UMINUS("abc") → #VALUE!
対処法は、引数のセルが数値型になっているか確認することです。文字列として保存されている数字(テキスト形式の "100" など)が原因のことも多いですね。VALUE関数(文字列を数値に変換する関数)と組み合わせるのも有効です。=UMINUS(VALUE(A1)) と書けば回避できますよ。
#NAME? エラー
関数名のスペルミスが原因です。UMINS U_MINUS UNARY_MINUS など、よくある書き間違いに注意してください。正しいスペルは UMINUS です。
また、スプレッドシートで作成した .xlsx ファイルを Excel で開いたときも #NAME? になります。Excel と共有するブックでは - 演算子に置き換えておきましょう。
MINUS関数と取り違える
UMINUS と名前が似ている MINUS関数 は、引数を2つ取る減算用の関数です。意味も使い方も違います。
=MINUS(10, 3) → 7(減算: 10 - 3)
=UMINUS(10) → -10(符号反転)
「マイナスにしたい」つもりで =MINUS(A1) と書くと、引数不足のエラーになります。1引数の符号反転は UMINUS と覚えておきましょう。
詳しい使い方はスプレッドシートのMINUS関数の使い方もあわせてどうぞ。
ABS関数と取り違える
「マイナスを取りたい」場面で UMINUS を選ぶと、正数を渡したときに負数になってしまいます。
=UMINUS(5) → -5(符号反転)
=ABS(5) → 5(絶対値)
=ABS(-5) → 5(絶対値)
「常に正の値にしたい」なら ABS、「符号を入れ替えたい」なら UMINUS です。目的に合わせて使い分けてくださいね。
まとめ
スプレッドシートのUMINUS関数の使い方を解説しました。ポイントを振り返っておきましょう。
- UMINUS関数は
UMINUS(value)で value の符号を反転した値を返す - 単項マイナス演算子(
-A1)と同じ結果を返すが、Google スプレッドシート固有の関数(Excel にはない) - 引数は1つだけ。MINUS関数(2引数の減算)とは別物
- ABS関数(絶対値)とは違い、UMINUS は符号を反転する(正→負、負→正)
- 同シリーズに UPLUS(そのまま返す)と UNARY_PERCENT(100で割る)がある
- ARRAYFORMULA と組み合わせると複数行で一括符号反転できる
普段の手入力では - 演算子の方が短くて速いので、無理して UMINUS関数 に置き換える必要はありません。Apps Script で数式を生成する場面や、関数で「符号反転」を明示したい場面で UMINUS関数 を選びましょう。この使い分けがおすすめです。
シリーズ関数(UPLUS / UNARY_PERCENT、それからMINUS / MULTIPLY など)もぜひセットで使い分けてみてくださいね。
