- ベストアンサー
Excelで数値が文字列になっています
Excel2010で「このセルにある数値がテキスト形式か、またはアポストロフィで始まっています」という警告が表示されたりして、計算が出来ません。 打ち直ししたり、「エラーチェックルール」で「文字列形式の数値、、またはアポストロフィで 始まる数値」のチェックを外したりして計算は出来るようになります。 「表示形式を変えてもセルの中の値は変化しません。数値データは数値のまま、文字列データは文字列のままです。」とは本当ですか? 本当ならば、数字の保存形式が文字列データかどうかを確かめる方法はありますか? なお、ISNUMBERという関数ではTRUEと出ます。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>なお、ISNUMBERという関数ではTRUEと出ます。 何か勘違いされていないでしょうか? 文字列データの数字は「FALSE」と表示されるはずです。 >文字列データであるかどうかは、デフォルト状態で左に表示される以外はないのでしょうか? 関数で対応するならISNUMBERやISTEXT関数で判定できます。 あるいは以下のようなCELL関数で数値なら「v」文字列なら「l」が返ります。 =CELL("type",セル番地) 実戦的に簡便な方法は、画面下のステータスバーに表示される集計の数値を参考にすることができます。 すなわち、データ範囲を選択して、画面下のステータスバーを見ると「データの個数」と「数値の個数」が同じ数ではない場合は、文字列の数字が入っていることになります。 ちなみに、ステータスバーに表示する項目は、ステータスバーを右クリックして「数値の個数」などの項目にチェックを入れて選択することができます。
その他の回答 (5)
- MackyNo1
- ベストアンサー率53% (1521/2850)
No5の回答者の回答で誤解が生じるといけないので、参考までに補足します。 >「表示形式を変えてもセルの中の値は変化しません。数値データは数値のまま、文字列データは文字列のままです。」とは本当ですか? すでに回答があるように表示形式を変えてもデータの中身は変化しません。 したがって、標準セルに数値を入力すれば、そのセルを文字列書式にしても当然のことですが、データは「数値」のままです。(ISNUMBER関数でTRUEが返ります) >この質問の発端は、ISNUMBER関数などでは判定できないことがある、という趣旨で解釈しています。 したがって、上記のようなことは基本的に発生しません。 ちなみに、標準セルに数値を入力して、そのセルを文字列書式にした場合は、再入力(セルを編集モードにしてEnter)した場合は、この数字が文字列データに変換されます。 もう1つの例であげられている数式で文字列セルを参照しているような場合は、エクセルが気を利かせて計算結果を文字列と判断して、自動的にセルの書式を「文字列」にしてしまいます。 これは日付セルを参照した数式を作成すると、そのセルの書式が自動的に日付となる現象と同じです。 文字列書式になっている数式セルの場合、セルを編集モードにして再入力すると、そのセルは文字列書式なので数式がそのまま表示されることになります。 したがってもともと「数値」セルだったものが「文字列」数字になる代表的なケースは、このような文字列書式のセルに数式などで数値が入力されており(この段階では数値)、このセルの数式を削除して数字を再入力したような場合に発生することになります。 ちなみに区切り位置の機能は、区切り位置ウィザードの「次へ」「次へ」の3/3で出てくる列のデータ形式が「G/標準」にチェックが入っているために、そのまま完了すると標準セルに再入力したパターンとなるわけです。 なお、この場合はセルの書式に関係なく指定した表示形式で入力(変換)することができます(逆に標準書式に入力されている数値を「文字列」数字に変換することが可能です)。
お礼
結構Excelを使っていたのに、「表示形式を変えてもデータの中身は変化しません」ということは、今回初めて知りました。その上、あなたの回答で、なんかわからないけど、直ったということの理由もわかりました。度々の丁寧な回答ありがとうございます。
- WindFaller
- ベストアンサー率57% (465/803)
#2の回答者です。 >なお、ISNUMBERという関数ではTRUEと出ます。 >再度確認したら、やはりISNUMBER()はFALSEでした。 ISNUMBERで、TRUEになる現象があります。この質問の発端は、ISNUMBER関数などでは判定できないことがある、という趣旨で解釈しています。だから、その元の質問の内容が覆されたら、私の回答は無効になってしまいます。 確か、データの種類によっては、インポートした後に、そういうことが起こった覚えがあります。そういう時には、「区切り位置」を使うという解決が定番で、この質問には、データのインポートや入力の状態自体は書かれておりません。 質問者さんの実際の状況とは違いますが、簡単に、その現象を作り出すには、最初にセルに数値を入れておいて、その後で、そのセルの書式を文字列[@]にすれば、ISNUMBERは、TRUEになります。(現在、手元には、Excel2007しかありませんので、それで回答しています) >文字列データとして保存されているとExcelに認識されているので、エラーチェックルールにかかるのでは理解していますが、いかがでしょうか? 上記の状況では、必ずしもエラーチェックが出るとは限らないはずです。 >文字列データであるかどうかは、デフォルト状態で左に表示される以外はないのでしょうか? 上記のように、文字列でも数値でもない状態の数字があった場合は、バグとして諦めて、書式を直したり、「区切り位置ウィザード」を使ってやるしかないはずです。 なお、その数値部分の書式形式を、文字列[@]に変えた場合に、その数値を参照して計算しようとすると、1度目は有効ですが、2度目はできないはずです。これは、古くからある問題のひとつで、未だに直されてはいないはずです。 例: A1:1 B1:2 C1: =A1*B1 ←数式が出てきてしまう。 A1 書式-文字列-[@] 一度目は、C1 には、2 と出ますが、もう一度、F2を押して数式にエンターを入れると、=A1*B1 と計算されず、数式は不活性化してしまいます。 もし、質問の要点が変わりましたら、この回答は無視してください。
お礼
「質問の要点が変わりましたら、この回答は無視してください。」なんて、とんでもありません。私などは質問するばかりなので、あなた様を含めて皆様に回答していただき、本当に感謝しています。補足かもしれませんが、インポートされたデータと同じようなことになったのではと、思いました。回答参考にし、もう少し検証してみます。ありがとうございます。
補足
補足させていただきます。 このデータは 1)通常の方法で、データを入力 2)入力が終了した時点で、テーブルを作成(テーブルスタイルで適当なものを選択) 3)完成させたテーブルを範囲に変換 4)マニュアル操作でセルの塗りつぶしをなしにする この作業の際に、このような症状になたのではと思っています。
- chonami
- ベストアンサー率43% (448/1036)
>「表示形式を変えてもセルの中の値は変化しません。数値データは数値のまま、文字列データは文字列のままです。」とは本当ですか? 私は上記のとおりに解釈しています。ただし、表示形式を変えた状態で一度編集状態にして確定などをすれば表示形式通りの型になります。 表示形式を変えただけだと見た目が変わるだけだと思います。 ご質問の内容ですと、該当列を選択し、 データ→区切り位置→完了 とすることで列ごと標準になりますので数値は数値のデータになるかと思います。 また、次へ次へと進んでいくと文字列に変換するダイアログも出ますので一度に変えたい場合は区切り位置を使われるといいと思います。 いちいち判定していくよりは効率的です。 >数字の保存形式が文字列データかどうかを確かめる方法はありますか どうしても確かめたいのならやはりISNUMBERやISTEXTなどで判定するしかないのでは?
お礼
回答ありがとうございます。 「私は上記のとおりに解釈しています。ただし、表示形式を変えた状態で一度編集状態にして確定などをすれば表示形式通りの型になります。表示形式を変えただけだと見た目が変わるだけだと思います。」はとても参考になります。ダブルクリックなどで、編集状態になった時に数値になる理由がわかりました。 勉強不足で、「データ→区切り位置→完了」も参考になりました。 これはどういうことなのか、もう少し勉強します。
- WindFaller
- ベストアンサー率57% (465/803)
>「表示形式を変えてもセルの中の値は変化しません。数値データは数値のまま、文字列データは文字列のままです。」とは本当ですか? これは、文章の意味を正しく理解してないかもしれません。それは、表示形式に関わらず、格納された数値データは、数値データですが、文字列データというのは、文字そのもののことだと思います。格納された数値の値自体が変化しないということです。(←ただし、私の記憶が正しければ、それは15桁までのはずです。) >数字の保存形式が文字列データかどうかを確かめる方法はありますか? ご質問の趣旨は、表示形式を「文字列」にした場合に、どう判定してよいか、ということだと思います。通常の書式設定では、文字列は左揃えになり、数値は右揃えになりますから、ひと目で判別がつくはずです。言い換えると、「位置」の表示形式は、左寄せや右寄せに統一することなく、デフォルト状態のままにしておけば、見分けが付きます。 >打ち直ししたり、「エラーチェックルール」で「文字列形式の数値、、またはアポストロフィで始まる数値」のチェックを外したりして計算は出来るようになります。 表示形式が「文字列」になっていたら、「数値」に変更し、もしアポストロフィ(prefix)が入っているのなら、目で確認できるはずですから、そうなら、表示形式を文字列から数値に変えて、範囲を選択してから、「区切り位置」ウィザードを立ち上げて、そのまま「完了」をクリックすれば直るはずです。
お礼
「区切り位置」ウィザードを使ってみました。 初めて使ってみました。 こういう方法もあるのですね。 ありがとうございます。
補足
早速の回答ありがとうございます。 私の質問がわかりにくかったと思います。 先頭にアポストロフィがなく見た目が数字のデータが、文字列データとして保存されているとExcelに認識されているので、エラーチェックルールにかかるのでは理解していますが、いかがでしょうか?解決策は教えていただいたように、いろいろと見つかりましたが、文字列データであるかどうかは、デフォルト状態で左に表示される以外はないのでしょうか?
- bin-chan
- ベストアンサー率33% (1403/4213)
1)どこかのセルに数値[1]を入力してコピー。 2)気になるセル(複数可)を選択して、右クリックの「形式を選択して貼付」 3)値-演算の乗算を選択してOK 4)1)を消す で数値になりませんか?
お礼
文字列になってしまったデータを数値にするのには、一番簡単そうです。 ありがとうございます。
お礼
とても参考になる回答、ありがとうございます。 再度確認したら、やはりISNUMBER()はFALSEでした。 ステータスバーは知りませんでしたが、勉強になりましたし、 これで対応できます。 セルに入っているデータは文字列だとわかることが必要でした。 ありがとうございます。