Googleスプレッドシートは数値を文字列に自動変換することがあるので注意

数値を文字列に自動変換することがある

GoogleスプレッドシートはExcelと違って、数値を文字列に自動変換することがあります。

「そんなことあるわけないだろ!」と思ったそこのあなたは、以下のリンクからGoogleスプレッドシートを開いてください。

Googleスプレッドシートを開く

開いたら以下の15桁と16桁の数値を貼り付けてください。

123456789012345
1234567890123456

桁がすべて見えるようにセルの幅を調整すると、15桁の方は右揃えの数値のままですが、16桁の方は左揃えの文字列になっていることが確認できます。

試しにISNUMBER関数で判定すると、16桁の方は文字列なのでFALSEになります。

=ISNUMBER(A3)
Googleスプレッドシートは数値を文字列に自動変換することがあるので注意

加算するとE+付きの指数表記になる

16桁の数値は文字列になると解説しましたが、これに1などを加算すると「1234567890123457」ではなく、E+付きの指数表記(1.23457E+15)になります。

シートで扱うデータが多いと数値が文字列や指数表記に自動変換されていても気づきにくいと思います。

値が自動的に変わってしまう可能性がある箇所には「条件付き書式設定ルール」を設定して文字列や指数表記に変更されたら背景色が変わるようにすれば、すぐに自動変更に気づけるのでオススメです。

Googleスプレッドシートは数値を文字列に自動変換することがあるので注意

文字列と指数表記の条件付き書式

条件付き書式設定ルールで文字列のときに背景色を変更するには、カスタム数式でISNUMBERをNOTで否定して「=NOT(ISNUMBER(A2))」のようにするだけなので簡単です。

=NOT(ISNUMBER(A2))
=NOT(ISNUMBER(A2))

指数表記の場合は「=REGEXMATCH(TO_TEXT(A2), "E[+-]?\d+")」のように数値を文字列に変換してREGEXMATCH(正規表現)を使って指数表記かどうか判定できます。

=REGEXMATCH(TO_TEXT(A2), "E[+-]?\d+")
=REGEXMATCH(TO_TEXT(A2), "E[+-]?\d+")

これらの条件付き書式設定ルールをセルに設定しておけば、数値が文字列または指数表記に自動変換されても背景色が変更されるので、下図のようにすぐにわかります。

Googleスプレッドシートは数値を文字列に自動変換することがあるので注意

数値入力のセルで文字列または指数表記に自動変換される可能性がある桁数が入力される箇所には必ずこの条件を入れておくとトラブルを防ぎやすくなります。

条件付き書式設定ルール(文字列または指数表記)を設定したシート