数字が文字列として記録されていることが原因ですが、ここでは正しい結果を得るための方法を紹介します。
- 数字が文字列として記録されていると、SUM関数で合計しても結果は0になってしまいます。
- 対策としてはSUM関数の内容を修正する方法と、文字列を数値に変換する方法があります。
手順
SUM関数の結果が0になる例
画像ではB3:B5に3つの数字が入力されています(適用されている表示形式つまり書式の設定は「自動」です)。
B6セルに「=SUM(B3:B5)」と入力してこれらの合計を求めているのですが、結果は0と表示されています。
数字の入力されているB3セルを選択すると「'100」と入力されているのが分かります。
このように入力されている数字は文字列として扱われるため、SUM関数で合計することができず結果が0になってしまうです。
なお、これ以外にも「="100"」といったように入力されている場合や、「'」がない「100」であっても表示形式(書式)が文字列(テキスト)であるためにSUM関数で合計できない、といった場合もあります。
関数の修正により対応する方法
数字の入力されているセルには手を加えず、関数の修正で対応する方法です。
画像ではB6セルの式を次のように改めることで合計を求めています。
B7セル
=SUM(ARRAYFORMULA((VALUE(B3:B5))))
VALUE関数を使うことでB3:B5セルの数値を文字列を数値に改め、そのうえでSUM関数で合計しています。
この方法で「'100」や「="100"」のように入力されている例のほか、数値とみなすことができる文字列はすべて合計することができます。
ただし、「100キログラム」とか「金100円」といったように単位などが文字列として一緒に入力されている場合は合計できませんので、まずこれらの文字を取り除くための操作が必要になります。
数字を数値に変換する方法
文字列として記録されている数字を数値に変換してしまおうという、いわば根治療法です。
まずB3:B5の範囲を選択し、メニューから「表示形式」→「数字」→「数値」と進みます。
すると文字が右寄せになり、合計もきちんと計算されました。さらに数式バーの表示が「100」になっているのがわかります。
これは、表示形式の変更に伴い文字列が数値に変換されたためです(ISNUMBER関数で評価するとTRUEになります)。
Excelでは書式を変更しても文字列が数値になることはありませんのでこうはならないのですが、Googleスプレッドシートでは表示形式を変更するだけで数値に変換されるため合計が直ちに求められます。
ところで、合計が求められるのはいいのですが小数点以下2桁表示になってしまうのが気になります。
そこでさらにメニューから「表示形式」→「数字」→「自動」と進みます。元の文字列に戻ってしまいそうな気もしますが……
数値のままで表示桁数が桁が自動調整されます。
このように表示形式を2回変えるだけで操作は完了します。
数字が「=""」で囲まれている場合
さて、数字が文字列扱いされている例として、画像のように数字が「=""」で囲まれているという場合があります。
この場合もSUM関数で合計すると0になってしまいますし、上記のように表示形式を変更しても数値になってくれません。
そこで、これらのセル(B3:B5)を選択しコピーしたうえで、メニューから「挿入」→「特殊貼り付け」→「値のみ貼り付け」と進みます。
すると「=""」が外れてただの数字になります。
ただし、この数字は相変わらず文字列として扱われていますので、ここで上記の例と同じようにメニューから「表示形式」→「数字」→「自動」と表示形式を設定し直します。すでに「自動」であるものを「自動」に設定しても何も変わらないような気もしますが……
数値に変換され、合計を求めることができました。