数式の中にある「–」が、文字列を数値に変換することについて解説!【エクセルTips】

エクセル

はじめに

Excelの数式を読んでいて、「–A1」や「A1*1」といった見慣れない表現に出くわしたことはありませんか?
これらは「文字列の数値を数値に変換する」ためのテクニックですが、なぜこんな書き方をするのかピンとこない人も多いですよね。
今回は、「–」や「*1」が何をしているのか解説します!

キュウ
キュウ

シノさんの数式で見つけたときはサッパリ分かりませんでした。

シノ
シノ

あまり一般的ではないですからね…

「–」の意味

シノ
シノ

今回は数式「=–TEXT(B4,”#-00-00″)」を例として考えてみましょう。

キュウ
キュウ

この数式はどういう意味なんですか?

シノ
シノ

西暦4桁、月2桁、日2桁の合計8桁の文字列の数字を、
計算に使えるシリアル値の日付に変換する数式です。

キュウ
キュウ

ここでの「–」の役割が今回のテーマですね。

シノ
シノ

TEXT関数は、その名の通り第2引数に設定した書式を、
第1引数のデータに適用した文字列を返します。
しかし、数式に出して欲しいのは、数値であるシリアル値の日付なんです。

キュウ
キュウ

つまり…文字列を数値に変えているのが「–」ということですか?

シノ
シノ

そういうことです! Excelには足し算などの計算に、
見た目が数値の文字列を入れると数値に変換されるという仕様があります。
「数値の100足す文字列の50」という数式であっても、
文字列の50は数値の50に変換されて、答えは150になるわけです。

キュウ
キュウ

そんな仕様があったんですね。

シノ
シノ

「1」をマイナスにすると「-1」、「-1」を更にマイナスすると「1」。
計算によって数値への変換を行う仕様を使いつつ、
元の数字は変えないということですね。

キュウ
キュウ

元の数字を変えないように計算をして、
変換の効果だけを得るために必要だったんですね。

シノ
シノ

はい、同じように数値に1をかけると同じ数値が答えになりますよね。
なので、こういう式でも同じ結果が得られます。

シノ
シノ

他にも色々と手はあります。
やはり、一番見た目でわかりやすいのがVALUE関数ですね。

シノ
シノ

この図ではSUM関数の引数に参照を入れることで、
文字列が数値に変換されているかどうかを表しています。

キュウ
キュウ

VALUE関数は文字列を数値に変換する数式ですから、意図が明確ですね。
言われてみれば…という数式が並んでいますね。

シノ
シノ

だいたい計算記号に1が付いてるので察しがつきやすいですが、
「–」は初見殺し感が強いですね。

キュウ
キュウ

はい、私は見事にやられちゃいました。

シノ
シノ

ご、ごめんってば…

おわりに

疑問は解決しましたか?
「–」や「*1」を見かけたら、「これは 文字列の数値を数値に戻している のでは?」と考えましょう。
数値といっても、「1,000」のようなわかりやすい表示ではなく、今回示した例のように日付こともあるかもしれません。
数式においては、可読性(読みやすさ)も大切ですので、今回解説した知識があってもVALUE関数を使うというのも有効だと思います。
今回は難解な数式の表現について解説しました。
他にも、こういう数式を見かけるけど意図がわからないというものがあればぜひ教えてください。

【外部リンク】VALUE関数|Microsoftサポート

最後までお付き合い頂き、ありがとうございました!

当ブログはエクセル関数の擬人化キャラクター記事をメインコンテンツとしています!
よろしければこちらの記事もどうぞ~!

【内部リンク】エクセル関数 SUMIF関数擬人化記事

コメント

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