ここから本文です

文字列の数字+文字列の数字=数値で計算されるのはどうして?

pcs********さん

2017/12/1722:20:43

文字列の数字+文字列の数字=数値で計算されるのはどうして?

Excel2013で以下のような状態です。

A2、B1、B2、B3セルは文字列状態です。
A1、A3セルは通常の数値状態です。

A4セルには「=sum(A1:A3)」sum関数が入っていて、計算結果「200」は理解できます。
同じく
B4セルには「=sum(B1:B3)」sum関数が入っていて、計算結果「0」も理解できます。
(すべて文字列なので計算できない)
しかし
C2セルには「=A2+B2」の数式が入っていて、計算結果「200」とでます。これが理解できません。
A2もB2も文字列なのにどうして計算できてしまうんですか?
数字を文字列としたら計算に使用できないのではないんですか?
教えてください。

文字列,A2,Excel2013,B1,A1,SUM関数,Value

閲覧数:
115
回答数:
5

違反報告

ベストアンサーに選ばれた回答

アバター

ID非公開さん

2017/12/1723:46:49

たとえば、VALUE関数のヘルプをご覧下さい。

VALUE 関数 - Office サポート
https://support.office.com/ja-jp/article/257d0108-07dc-437d-ae1c-bc...

ーーー
Excel では、数式中の値は必要に応じて自動的に変換されるため、通常は数式の中で VALUE 関数を使用する必要はありません。この関数は、他の表計算プログラムとの互換性を維持するために用意されています。
ーーー

とありますね。
Excel では数式中の値を自動的に型変換する仕組みがありますので、文字列であっても数値として解釈可能なものは数値として計算されます。

ただし、関数の引数として与えられたものが、どう解釈されるかは、各関数の仕様によります。
これは統一性がないように見えるかもしれませんが、SUM関数やAVERAGE関数ではセル範囲を指定する事が多く、その中に文字列(空文字列を含む)があるだけで#VALUE!エラーになるのでは使い勝手が悪すぎます。
ヘルプに例えば「SUM はテキスト値を無視して、数値だけを合計します。」とありますように、これらの関数では文字列は無視して計算されます。

念のため、申し添えますと、SUM関数やAVERAGE関数などでは文字列は「無視」されるのであって、0とみなされるのではありません。
SUM関数なら0とみなしても結果は同じですが、AVERAGE関数などでは重大な違いになってしまいます。

質問した人からのコメント

2017/12/19 15:38:12

細かな説明ありがとうございます。納得しました。ヘルプをうまく理解することって大事なんですね。ヘルプを理解できるように今後使っていきたいと思います。

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

gru********さん

2017/12/1723:53:32

Excelが数字だけの文字列を「あ、これ数値に変換できそうだから変換しておきますね」とするか「これ文字列ですから数値と違いますよ」とするかは、場面によって違います。四則演算やtext関数は前者の例で、sum関数や論理演算は後者の例ですね。全体が統一的なルールになってないんです。これは覚えてウマく活用するしかありません。

プロフィール画像

カテゴリマスター

aka********さん

2017/12/1723:24:30

推測ですが
+ を式の途中で使用した時は 値を数値として
&を式の途中で使用した時は 文字に置き換えるという 約束があるのでは

=A1+B1とすれば すべてを 数値として計算
つまり=VALUE(A1)+VALUE(B1) と計算
しかし セルが 数値に置き換えられない文字列だと =VALUE(A1)は エラーになります。
従って 数値に置き換えられない文字列が あれば =A1+B1は エラーになります。


逆に =A1&B1 としたときは 数値は””を 付けて文字とする

SUMの場合は 文字は0 として 集計

という事では ないかと

va3********さん

2017/12/1722:58:04

表をそのまま再現して、A列を作り(確かにA4は200になりました)
B列を作り(確かにB4は0になりました)
C2を入力したら、0になっちゃいましたけど・・・w
作る順番によっても、結果が違ってくるみたいです。

C2の計算式<=SUM(A2:B2)>の中をfxのボタンで見て、

={"100","100"}

私が再現したのはこうなっていました。これはおそらく
対象セルを文字列として認識しているようです。
(ダブルクォーテーションで囲んでいるから)なので結果は0になっていました。

普通に計算できたという事は、例えば

={100,100}

となっているのではないでしょうか。数字として認識しているなら
結果は200になるでしょう。


プログラミングの考え方にも関わってきますが計算できたのは、
型変換を内部で自動的にしているからだと思います。
文字列型から数字型(整数か小数かとかはあるんですがさておいて)
に型変換して、得られた数値で計算しているのでしょう。

表をそのまま再現して、A列を作り(確かにA4は200になりました)
B列を作り(確かにB4は0になりました)...

mac********さん

2017/12/1722:40:05

Excelでは多くの場合、関数などでは(COUNTIF系の関数などでは例外もありますが)、文字列数字と数字は違うデータとして認識されます。

しかし、文字列数字を四則計算すると、その文字列をExcelが(気を利かせて)「数値」として認識する仕様になってます。

たとえば、「”1:00"」は文字列の時間ですが、「”1:00"+”1:00"」と入力すれば「2:00」とシリアル値として計算されますし「”1:00"*1」とすれば通常の「1:00」と同じ値になります。

同様に「1-2」や「1/2」のような文字列を入力しても、Excelが勝手に日付として認識するのと同じような仕様です。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる