スプレッドシートで「数値をそのまま返す」関数があるのをご存知ですか? Google スプレッドシートには、引数として渡した値をそのまま返すだけの UPLUS関数 という関数が用意されています。
「そのまま返すだけ? それって何の意味があるの?」と思いますよね。実は Apps Script や数式生成、関数として処理を明示したい場面では、ちゃんと使い道があるんですよ。
この記事では、スプレッドシートのUPLUS関数の構文・使い方を解説します。単項プラス演算子(+)との違い、UMINUS や UNARY_PERCENT とのシリーズ整理まで、実例つきでまとめました。
スプレッドシートのUPLUS関数とは?
スプレッドシートのUPLUS関数は、引数として渡された値を そのまま返す 関数です。=+A1 と書く代わりに =UPLUS(A1) と書けます。
UPLUS は Unary PLUS(単項プラス)の略で、「ユープラス」と読みます。単項プラスとは、+A1 のように1つの値の前につけるプラス記号のことです。
実は UPLUS関数は Google スプレッドシート固有の関数で、Microsoft Excel には存在しません。「Excelからスプレッドシートに移ってきて初めて知った」という方も多いのではないでしょうか。
スプレッドシートには UPLUS の仲間として、UMINUS(符号反転)や UNARY_PERCENT(100で割る)があります。これらは 単項演算子関数 と呼ばれ、引数を1つだけ取るのが特徴です。それぞれ +A1 -A1 A1% の演算子と同じ結果を返しますが、関数として書きたい場面で活躍しますよ。
UPLUS関数の構文と引数
UPLUS関数の構文はとてもシンプルです。
=UPLUS(value)
引数は次の1つだけです。
| 引数 | 必須 | 内容 |
|---|---|---|
| value | 必須 | そのまま返したい数値、または数値を返すセル参照 |
戻り値は value そのものです。正の数を渡せば正の数、負の数を渡せば負の数、0 を渡せば 0 が返ります。値を変更しないので、=A1 と書くのとほぼ同じ結果になります。
なお、引数はスカラー値(単一の値)のみ対応で、A1:A10 のようなセル範囲を直接渡すことはできません。範囲指定をしたい場合は ARRAYFORMULA との組み合わせが必要になりますよ。
UPLUS関数の基本的な使い方
実際のサンプルで動きを見ていきましょう。
例1: 数値をそのまま返す
| 行 | A: 入力値 | B: 数式 | 結果 |
|---|---|---|---|
| 2 | 100 | =UPLUS(A2) | 100 |
| 3 | -50 | =UPLUS(A3) | -50 |
| 4 | 1500 | =UPLUS(A4) | 1500 |
=A2 と書いても、=+A2 と書いても、まったく同じ結果になりますね。
例2: セル参照をそのまま返す
=UPLUS(C5) → C5 の値そのまま
=UPLUS(D10) → D10 の値そのまま
セル参照を渡しても、参照先の値がそのまま返ります。値の変換は一切ないので、見かけ上は普通の参照式と同じです。
例3: 数式の中で「数値として扱う」ことを明示する
UPLUS関数は数式の中で「ここは数値として扱う」と明示する役目に使えます。
=UPLUS(A1) + UPLUS(B1)
=A1 + B1 と書くのと結果は同じです。ただし関数名で「数値処理をしている」と読み手に伝えられる利点があります。複雑な数式の中では、こうした明示が後から読み返したときに役立ちますよ。
例4: 0 や空白を渡したとき
=UPLUS(0) → 0
=UPLUS("") → 0
0 や空白セルを渡しても、エラーにはならず 0 が返ります。集計の中で安全に使える挙動なんです。
UPLUS関数と単項プラス演算子(+)の違い
「結局、=+A1 や =A1 と書くのと何が違うの?」という疑問はもっともです。両者を比較してみましょう。
| 観点 | 演算子 + | UPLUS関数 |
|---|---|---|
| 記述の長さ | 短い(=+A1) | やや長い(=UPLUS(A1)) |
| 引数の数 | 1(前置) | 1(固定) |
| ARRAYFORMULA | 使える | 使える |
| Apps Script から数式生成 | 文字列結合がやや手間 | 関数呼び出しで読みやすい |
| 関数として明示 | できない | できる |
| Excel との互換性 | 互換あり | Excel 非対応 |
| 一般的な使用頻度 | 高い | 低い |
普段の手入力では + 演算子(あるいは演算子なしで =A1)の方が短くて速いです。UPLUS関数が活きるのは、Apps Script や API で数式文字列を組み立てる場面ですね。あとは「ここで値を数値として扱っている」と関数名で明示したい場面にも向いています。
「そのまま返すだけの関数」は何のために存在する?
ここまで読んで「UPLUSって本当に意味あるの?」と感じた方も多いはずです。たしかに =A1 と =UPLUS(A1) は同じ結果ですよね。
それでもこの関数が用意されているのには、ちゃんと理由があるんです。主に3つの場面で活躍します。
Apps Script で数式文字列を組み立てるとき
Apps Script からセルに数式をセットする場面を考えてみましょう。
// 演算子で組み立てる場合
sheet.getRange("B1").setFormula("=+" + cellRef);
// UPLUS関数で組み立てる場合
sheet.getRange("B1").setFormula("=UPLUS(" + cellRef + ")");
"=+" のような文字列連結は、後から見たときに「何の演算?」と一瞬迷う書き方です。=UPLUS() で関数として書いておけば、コードを読むだけで「単項プラス処理をしている」と分かりやすくなりますよ。
数式の意図を関数名で明示したいとき
複雑な数式の中で、「この値は数値として扱うこと」を明示したい場面があります。
たとえば、文字列扱いされている数値を数値として処理する流れの中で、=UPLUS(A1) と書いておくとします。後から読み返したときに「ここで数値として扱っている」と分かりますよね。=A1 だと意図が伝わりにくいんです。
実務では VALUE関数(文字列を数値に変換する関数)を使う方が一般的です。ただ「単項演算子で十分」と判断する場面では UPLUS関数を選ぶのもアリですよ。
単項演算子関数シリーズの一員として
Google スプレッドシートでは UMINUS / UNARY_PERCENT と並んで、単項演算子関数のセットが整備されています。「単項マイナスや単項パーセントが関数として書けるなら、単項プラスもあって当然」という設計思想ですね。
UPLUSが用意されていることで、単項演算子の3関数(プラス・マイナス・パーセント)を関数の文脈で統一的に扱えるんです。シリーズとしての完全性を保つために存在している、と捉えるのが分かりやすいですよ。
単項演算子関数シリーズ(UPLUS / UMINUS / UNARY_PERCENT)
UPLUS関数は、Google スプレッドシートに用意された3つの単項演算子関数のひとつです。残り2つもセットで覚えておくと便利ですよ。
| 関数 | 演算子 | 構文 | 結果 |
|---|---|---|---|
| UPLUS | +(前置) | UPLUS(value) | value をそのまま返す |
| UMINUS | -(前置) | UMINUS(value) | value の符号を反転 |
| UNARY_PERCENT | %(後置) | UNARY_PERCENT(value) | value ÷ 100 |
すべて引数は1つだけ、という共通仕様です。
UMINUS関数は数値の符号を反転する関数で、-A1 と同じ結果を返します。経費を正数で入力して符号反転で表示する場面などで活躍しますよ。詳しくはスプレッドシートのUMINUS関数の使い方もあわせてどうぞ。
UNARY_PERCENT関数は % 演算子と同じで、UNARY_PERCENT(50) は 0.5 を返します。50% と入力するのと同じ結果ですね。こちらもスプレッドシートのUNARY_PERCENT関数の使い方で詳しく解説しています。
なお、引数を2つ取る 算術演算子関数 には ADD / MINUS / MULTIPLY / DIVIDE があります。あわせて覚えておくと、スプレッドシートの演算子関数の全体像が見えてきますよ。
ARRAYFORMULAとの組み合わせ
複数行で同じ処理を繰り返したいとき、ARRAYFORMULA と組み合わせると 1セルだけで全行に展開できます。
範囲をまとめて処理する
=ARRAYFORMULA(UPLUS(A2:A100))
A2 から A100 までの値が、それぞれ UPLUS関数 を通って B 列に並びます。結果としては値がそのまま返るので、見た目は =A2:A100 と同じです。
「同じ結果なら ARRAYFORMULA + UPLUS にする意味は?」と思うかもしれません。これも Apps Script で数式を組み立てる場面で「関数として明示したい」ときに使うパターンですね。手入力では正直、メリットは少ないです。
空白セルを除外したいとき
何も入力されていない行まで 0 と表示されると見た目が悪いですよね。IF関数と組み合わせて、空白行は何も表示しないようにしましょう。
=ARRAYFORMULA(IF(A2:A="", "", UPLUS(A2:A)))
これで A 列が空白の行は何も表示されず、入力済みの行だけが結果として出るようになりますよ。
ExcelにUPLUS関数はある?
結論からいうと、Microsoft Excel には UPLUS という名前の関数は存在しません。
Excel で同じことを書きたい場合、選択肢は限られます。素直に =A1 と書くか、=+A1 のように単項プラスを付けるのが一般的です。
「Excel と同じ感覚でスプレッドシートに =A1 と書けば良いのでは?」と思うかもしれません。それで全く問題ありません。UPLUS関数は Google スプレッドシートが用意した「単項プラス演算子の関数版」という位置付けです。Apps Script や API との連携を意識して整備されたものなんですね。
ですから、Excel ファイルとして .xlsx で書き出す予定がある場合は注意が必要ですよ。UPLUS関数ではなく + 演算子(または演算子なし)で書いておく方が安全です。Excel で開いたとき、UPLUSは #NAME? エラーになってしまうんです。
よくあるエラーと対処法
UPLUS関数で遭遇しやすいエラーをまとめておきます。
#VALUE! エラー
引数に数値として解釈できない文字列が入っているときに発生します。
=UPLUS("abc") → #VALUE!
対処法は、引数のセルが数値型になっているか確認することです。文字列として保存されている数字(テキスト形式の "100" など)が原因のことも多いですね。VALUE関数(文字列を数値に変換する関数)と組み合わせるのも有効ですよ。=UPLUS(VALUE(A1)) と書けば回避できます。
#NAME? エラー
関数名のスペルミスが原因です。UPLS U_PLUS UNARY_PLUS など、よくある書き間違いに注意してくださいね。正しいスペルは UPLUS です。
また、スプレッドシートで作成した .xlsx ファイルを Excel で開いたときも #NAME? になります。Excel と共有するブックでは + 演算子(または =A1)に置き換えておきましょう。
MULTIPLY関数や他の演算子関数と取り違える
UPLUSと名前のイメージが似ている MULTIPLY関数 は、引数を2つ取る乗算用の関数です。意味も使い方も違うので注意してください。
=MULTIPLY(10, 3) → 30(乗算: 10 × 3)
=UPLUS(10) → 10(そのまま返す)
「2つの値を足したい」つもりで使うべきは ADD関数ですし、「数値をそのまま扱いたい」だけなら UPLUS です。1引数の単項プラスは UPLUS と覚えておきましょう。
詳しい使い方はスプレッドシートのMULTIPLY関数もあわせてどうぞ。
UMINUSと取り違える
「単項演算子の関数」つながりで UMINUS と混同しやすいです。UMINUS は符号を反転する関数なので、結果はまったく違います。
=UPLUS(5) → 5(そのまま)
=UPLUS(-5) → -5(そのまま)
=UMINUS(5) → -5(符号反転)
=UMINUS(-5) → 5(符号反転)
「値を変えずに通したい」なら UPLUS、「符号を入れ替えたい」なら UMINUS です。目的に合わせて使い分けてくださいね。
まとめ
スプレッドシートのUPLUS関数の使い方を解説しました。ポイントを振り返っておきましょう。
- UPLUS関数は
UPLUS(value)で value をそのまま返す - 単項プラス演算子(
+A1)と同じ結果を返すが、Google スプレッドシート固有の関数(Excel にはない) - 引数は1つだけ。MULTIPLYやADD(2引数の演算)とは別物
- 「そのまま返すだけ」に見えるが、Apps Script での数式生成・関数として処理を明示したい場面・単項演算子関数シリーズの一員として存在意義がある
- 同シリーズに UMINUS(符号反転)と UNARY_PERCENT(100で割る)がある
- ARRAYFORMULA と組み合わせると複数行で一括処理できる
普段の手入力では =A1 や + 演算子の方が短くて速いので、無理して UPLUS関数 に置き換える必要はありません。Apps Script で数式を生成する場面や、関数で「ここは数値として扱う」を明示したい場面で UPLUS関数 を選びましょう。この使い分けがおすすめですよ。
シリーズ関数(UMINUS / UNARY_PERCENT、それからMINUS / MULTIPLY など)もぜひセットで使い分けてみてくださいね。
