- ベストアンサー
テキストデータなのに数字とは
コンピューターでテキストデータというと文字データのことだとよく言われますが、エクセル等で数値入力のセルのデータ(つまり数値)もTXT拡張子でしっかりと数字が出てくるのですが、このあたりの認識に仕方がいま一つ分かりません。数値データでも表示上はテキストとしてのデータとリンクしてたり・・・とか色々考えますが実際の所どうなのでしょうか?文字と数値は別のものなのでは。
- みんなの回答 (11)
- 専門家の回答
質問者が選んだベストアンサー
#8です。 別に質問者さんを混乱させるつもりはありませんが、ただ、Excelの場合は、基本的なことだと思いますから書かせていただきます。 ワークシート上で、使用されている数値とか文字の数字とかの基本的に区別はありません。 Excelの数字というものは、ユーザーが、それ(対象)を扱う目的と方法によって変化します。 今までのLotusなどの表計算と違います。これは、VBAにも同様の現象があります。プログラムを専門に書く人にとっては、ひどく雑な内容に感じるときがあります。 それは、使いやすい部分あれば、不便な点もあります。 A B C 表示 1 1 = A1+B1 ....2 1 1 = A2&B2 ....11 <-文字として扱われている(文字列になっている) '1 '1 = A3+B3 ....2 <-数値として扱われている '1 '1 = A4&B4 ....11 書式「文字列」 1 1 =A5+B5 ...最初 2 が出るが、もう一度 [Enter]を入れると、数式は不活性 =A5+B5(事実上使えなくなってしまいます) となります。 A6 '2008/8/16 =A6*1 [=VALUE(A6)] <-シリアル値に変化する 文字列でリテラル値を認識させても、計算すると内部で変更してしまいます。 文字列として3番目をMID関数で出す 123456 =MID(A7,3,1) ....3 <-文字として扱われている =IF(ISNUMBER(MID(A7,3,1)),"数値","文字") こうしてみれば、文字になっていることが分かります。 =FIXED(A7,0,1) とすると、文字列に変わりますが、しかし、数字を文字列にして扱うとかいう必要がありません。「'(接頭辞--Prefix)」を使うのは、10/01 は、そのまま入力すると、日付シリアル値に変換されてしまうので、それを文字列のまま扱いたいときに、'10/0と使います。
その他の回答 (10)
- isizii
- ベストアンサー率25% (3/12)
「数字」はテキスト(文字)。従って故意に指定しなければセルの左寄せで表示されます。この場合は、計算の対象にはならず、計算のデータとするには「数値」への変換が必要。(=value(文字)) 「数値」はカズを表し、計算の対象として利用でき、故意に指定しなければセルの右寄せで半角で表示されます。(数字への変更は可能) 「字」は文字、「値」はカズ。独学の私の理解の仕方です。ご参考まで。
- Zozomu
- ベストアンサー率22% (123/545)
状況が見えてきました 質問者さんは、別の質問でも書いているようにコンピュータの初心者で ハード的な部分での数値と数字の違いと ソフト的な部分での数値と数字の違いが 区分けできていない さらに、おそらく、OSとアプリケーションの違いについても 十分な理解が無いのでしょう なので ・質問の意図を端的に且つ明確に書く事が出来ていない ・その為、期待した回答が得られないし、回答を理解できない部分もある ・理解できたと感じた部分を元にまた質問する という繰り返しなのでしょう という事で、根本的な所から コンピュータ内部ではデータは全て0と1の組み合わせ(2進数)の数値で記憶され処理されています 2進数の1桁を1bit(ビット)といい コンピュータでは8桁を一括りとして1byte(バイト)を基本的な最小単位としています 余談ですが、人がバイナリデータを表記する際は16進数を用います 文字データも文字コード(数種類有ります)という文字毎に振られた番号で、つまり、数値化されて記憶・処理されます で、半角英数字や主要な半角記号は1byte、全角文字・記号と一部の文字コードでは半角カタカナは2byteの数値データして扱われます しかし、人がコンピュータを扱う際に一から十まで2進数や16進数で入力したり見たりしているのでは不便この上ないので、使いやすくしてくれているのがOS(Windows等)です さらに、いろいろな機能(文書作成の為のワープロや、表作成の為の表計算)を提供してくれるのが、WordやEXCELといったアプリケーションソフトです で、EXCELは表計算ソフトですので、基本的にセルに入力された数は数値として認識します が、使う側(人)が数値ではなく数字(つまり文字)として扱いたい場合は、数の頭に’をつけたり、セルの書式を変更したりして、その数が文字データである事をEXCELに教えてあげる事が必要になる訳です かなり大雑把な説明ですが、質問したい事の整理の役に立てばと思います
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ご質問者さんは、同じ質問をずっと繰り返しているようですね。 http://oshiete1.goo.ne.jp/qa4238854.html http://oshiete1.goo.ne.jp/qa4237659.html http://oshiete1.goo.ne.jp/qa4237621.html http://oshiete1.goo.ne.jp/qa4237534.html そういうこだわりは、私には良く理解できません。文字列の数字と数値が、同じものか違うものか、それをバイナリでみて違うから、どうだという話なら、もう説明されていませんか。 ただ、違うということを明確にしなければ扱えないとしたら、ユーザーは、バイナリ自体で扱わなければ、それが分からないということになってしまいます。現実にトラブルがあるとか、処理できないという具体例があれば話は別です。 もう、この質問で終わりにしてくれませんか? 現代流のソフトウェアの考え方というのは、 「数値を文字で扱えば文字になり、数値で扱えば数値になる。」 ということです。 言い換えれば、 「文字の数字は、計算の対象にはならないけれども、数値は計算の対象とされる。」 しょせん、ソフトウェアは、ブラックボックスには変わりありません。 テキスト・ソースは、メモ帳などを使うか、MS-DOSのtype コマンドなどで表示する以外は、その中身を知ることは出来ません。ただ、そこには、数字を計算対象の数値として認識する機能がありません。 しかし、Excelでいうなら、バイナリという言い方もおかしくなってきます。結果として、保存しバイナリで格納しているだけであって、CSV をExcelのファイルの一部として入れるなら、CSVはテキストファイル型といえると思います。もし、書式情報まで入れるなら、SYLKファイルもありますが、これもテキストファイル型です。そのソフトウェア処理する状態で格納したものが、どういう状態であるかというのは、ユーザー選択の範囲だと思います。 特に、Excel2007の標準のファイルは、単に、xml コードで書かれているだけで、それをZIPで圧縮しているだけです。それは、バイナリといえばバイナリでも、やはり元はテキストファイルです。Excelというアプリケーションの過程で変換され表示されているだけで、そのコードには、計算の対象して数値という約束ごとが書かれているだけです。 <v>1 ←数値だとしてあります。 s="1" ←文字で「1」だとしています。 数値に相応しくないものが入れば、エラーになるけれども、数値は、文字にも数値にも扱われるということで、結果としての収納された型が違うだけです。最初から、ユーザーレベルでは、数字と数値が違うわけではありません。必要に応じて、扱い方が変わるし、変えなくてはならない、ということです。決められたものではありません。
- imogasi
- ベストアンサー率27% (4737/17069)
コンピュタの内部メモリの中では(人間の意図で言えば)データ+指令+アドレス(レジスタアドレス)などが記憶されていますが、 これらはプログラム作成者の意図によって,必要があれば、その時どきに相互に変換されます。 人間の意図で言えば、データの中には文字コードで表された部分・方法と数値(2進数的)で表される部分があるわけですが、現在の内部・外部メモリがふんだんに使える時代では、見て判りやすいので数値も数字文字で処理され、表示され、計算される直前で演算装置が受け入れる2進数的なデータに変換され、演算装置に送られる場合が多いと思います。CPUによって演算できる2進数的数も2進数数と浮動小数点数とあるものもあった。 表計算などは利用者に結果を判りやすく見せることが主要事項なので、質問者のような疑問が出るのではないかな。 基礎的主要部分や難しい部分は利用者には隠すのが流儀なので、探究心を持った者には、自分で突っ込んだ基礎的な勉強が必要です。 コンピュタ初期の機械語を扱った者、C言語などやった者などには、別に不思議でないことが、Excelからコンピュターを使い始めると 良くわからない基礎部分が出るのはやむを得ないと思いますが、Excel利用でやれる高度な・複雑なことをマスタするほうに力を向けることで、自分のスキルを進歩させるほうがよいと思います。探求型の人には気になるかも知れないが。
- mitarashi
- ベストアンサー率59% (574/965)
ちょっと別の切り口から。 エクセルの数値と文字列の扱いが融通無碍なのです。VBAでセルの値を真面目に型変換しないでも動作してしまって驚かされる事がありますが、ワークシートでの計算も下記の通り、何でもありです。 (注)A列はセルの書式と、入力方法を示しています。 .......................................A...............B...................C........................D ..1.......................................................................=RC[-1]+1...=RC[-2] & "4" ..2..............標準→数値入力.................123................124...................1234 ..3..............数値→文字列形式.............123................124...................1234 ..4......文字列形式→文字入力............123................124...................1234 ..5シングルクォーテーション付...........123................124...................1234 外していたらすみません。
- zap35
- ベストアンサー率44% (1383/3079)
うーん どう説明したら分かりやすいですかね 元々のデータに「数値」も「文字列(テキスト)」もないのですよ。 データを「数値」や「文字列」と解釈するのは、そのデータを扱うアプリケーション(エクセルだったり、その他のプログラム)なのです 混乱するかもしれませんね。例を挙げます。 テキストファイルに「abc123」というデータがあるとします。これは16進コードにすると 61 62 63 31 32 33 (改行) というコードの並びにすぎません(ASCIIコードです) これをエクセルに読み込ませると abc123 というデータになりますが、エクセルは「英文字と数字の混在するデータは文字列」とみなすので、このセルは「文字列」として判定されます もし 61 62 63 (改行) 31 32 33 (改行) というデータなら、エクセルに読み込むと A1セル abc (左詰) A2セル 123 (右詰) という具合にシートに読み込まれます。abcは英文字がなので「文字列」、123は「数字だけなので数値」として扱われます。これはエクセルが定めたルールに従って解釈しているだけのことなのです。 >文字と数値は別のものなのでは エクセルでセルに「123」と「'123」を入力すると「123」は右詰になり数値となり、「'123」は左詰となり文字列として扱われます。 これはデータとしては「31 32 33」で同じなのです。ただし「'123」は先頭のPrifixの「'」が「文字列として入力された」ことを意味しますので「セルの書式が自動的に文字列として処理されている」だけのことなのです。 ちなみにVBやVBAのプログラムで Dim A As Integer (Aは整数である) と定義した変数Aに「abc123」というデータを代入するとエラーになります。でもエクセルではセルにどんな値が入力されるか分からないので、そう簡単にエラーとならないように「データによって文字列か数値かを自動的に判別している」のです。 繰り返しになりますがデータを「文字列」「数値」と認識するのはプログラムのルールです。「123」というデータも「数値」として扱うか、「文字列」として扱うかはそのプログラムで定められたルール次第で変わるのであって元のデータは「31 32 33」でしかありません。
- Willyt
- ベストアンサー率25% (2858/11131)
数字という意味がバイナリーファイルとテキストファイルでは異なるのです。バイナリーファイルでは8という数字は二進数で 0100 と書かれます。しかしテキストファイルでは 8 は8ビットコードでは16進 C8、2進では11000100 と表わされます。つまりテキストファイルでは1バイトまたは2バイトずつデータを取りだし、コード表を参照して一つの文字を読取るのです。
- Zozomu
- ベストアンサー率22% (123/545)
仰るようにコンピュータ上では数字(文字データ)と数値は別物です > エクセル等で数値入力のセルのデータ(つまり数値)もTXT拡張子でしっかりと数字が出てくるのですが という質問ですが、コレは数字=数値という事ではありません EXCELからシートをテキスト出力(TXT形式で保存)した場合、数値は数字へ変換して出力されているためです ですから、TXT形式ではなく通常のXLS形式ではバイナリ(数値)で保存されていますし、テキストデータも文字コードというバイナリデータとして保存されています
- Werner
- ベストアンサー率53% (395/735)
単に数値をテキストで表現しているだけでしょう。 たとえば、正の整数は '0'~'9'の10種類の文字の並び(文字列)で十進数表現することができます。
この場合の文字データとは「画像データ」や「音声データ」と対比しての言葉であり、その中身は「英数記号(の組合せ)」です。 だから数字でもTXTで出てきます。