• ベストアンサー

Excel の =TEXT()関数の怪?

http://oshiete1.goo.ne.jp/kotaeru.php3?q=2004201 配下の[No.2 EL-SUR]さんの回答中の =TEXT(A1,"00-00-00") あるいは =TEXT(A1,"0000-00-00") の部分は、私にとって“目から鱗”的なものでした。つまり、セル A1 が数値あるいは文字列の 20060121 であるとき、当該関数は 2006-01-21 なる文字列を返して来ることが。 でも当該関数を =TEXT(A1,"0000/00/00") にする(「-」を「/」に変更)とエラー #VALUE! になるのは何故なのでしょう?2006/01/21 となることを期待していたのですが… 気になって眠れないのです(^_^)

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.4

先にも回答したものですが /は割り算の演算子でもありますので !を前につけてただの記号だと宣言する必要があります。 =TEXT(A1,"0000!/00!/00") または =TEXT(A1,"0000""/""00""/""00") とすれば 2006/01/21 となり数値化すればシリアス値に変換されます。

noname#204879
質問者

お礼

mshr1962さん、 》 !を前につけてただの記号だと宣言する必要がありま 》 す 「!」の意味を知らないでいました。勉強になりました。 》 =TEXT(A1,"0000""/""00""/""00") なるほど。「!」方式の方が分かり易いです。 お蔭様で、喉に支えていた小骨が取れた感じでスッキリしました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • fukkyse
  • ベストアンサー率32% (130/402)
回答No.5

セルの書式設定の表示形式で不可能なものはダメだから。 「数字/数字」は分数としての表示方法。 日付を表す場合は「yyyy/mm/dd」で数字じゃない。 従って、文字列を返す関数は#4様の方法となります。 「=TEXT(A2,"00-00-00")*1」としてセルの書式を「yyyy/mm/dd」とすれば、2006/01/21と表示できます。 日付については、文字列よりもシリアル値のほうが使い勝手がよいと思います。 日付表示の参考を貼っておきます

参考URL:
http://www.relief.jp/itnote/archives/000018.php
noname#204879
質問者

お礼

了解しました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.3

TEXT関数の2番目のパラメータに指定できる文字には決まりがあります。 これがセルの書式設定にあるユーザー定義に指定できるものと同じです。 http://hp.vector.co.jp/authors/VA014071/tips/celfrmt.html これを見ますと / (スラッシュ)は除算記号の表示に用いることになっています。 つまり分数は x/y という形式ですから、x/y/z という形式では表示できません、という意味でエラーになっているのだと思います。 試しに / をひとつにすればエラーは出ません。 要は日付用の記号ではなく除算用の記号なので、こういう用途では使えません。

noname#204879
質問者

補足

》 要は日付用の記号ではなく除算用の記号なので、こ 》 ういう用途では使えません それで納得せざるを得ないようですが、「/」は日付の区切り記号でもあるので、イマイチ得心が行きません。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

書式設定の文字列で「/」は少数部分の分数表記です。従って、数値 20060303.25に書式"0.0/0"を適用すると、表示は20060303.1/4にな ります。 で、「/」が複数現れるのは分数としておかしいので、エラーになる わけです。

noname#204879
質問者

補足

う~む、そうですか。 「/」は年月日の区切り記号としてもお馴染みですけど… 》 「/」が複数現れるのは分数としておかしい… 除算としてならおかしくないけど、この場合は分数ですかぁ。

全文を見る
すると、全ての回答が全文表示されます。
  • akio_myau
  • ベストアンサー率34% (515/1480)
回答No.1

0000/00/00と0の除算として認識してしまうために #DIV/0#となってしまい、 #VALUEとなっているのだと思います。

noname#204879
質問者

補足

「/」が「除算として認識」なら、「-」が減算として認識されても良さそうですが…

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テキストファイルから文字列の表示 2

    以前に質問した「テキストファイルから文字列の表示」の続きです。長ったらしい説明になるので、「テキストファイルから文字列の表示」を見た上で答えていただきたいです。コードは、「テキストファイルから文字列の表示」のNO.3~NO.5を主に参考にさせていただきました。OPEN_"*.*"の抽出が、*.*の形だけではなく、OPEN_"*"(つまり、OPENのあとに" "があると" "をすべて拾ってくる状態)で認識されています。*.*の形だけで抽出は出来ないものでしょうか。あと、" "の中に、":"(例.OPEN "C:temp",OPEN "ASD:")があると、":"がある所は無視されてしまいます。これもどうにかならないでしょうか 参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?qid=340321

  • エクセルのFIND関数について

    エクセルの関数でFINDというのがあります。文字ストリングの中に 指定する文字列があれば、最初から何番目かを返す関数です。 質問は、もし見つからない時は式をいれたセルに「#VALUE!」 と表示されますが、IF文の中で使うような時、何と言う値で聞けば良いのでしょうか。””やNULLやNOTHINGやFALSEや-1でやって見ましたが上手く行きません。 =IF(FIND(”市”、A1、1)=○○、A1、” ”)の○○は何でしょう。(A1セルの文字列に「市」がなければA1を持ってきて、あれば ブランクとする.)

  • 続:123,156,789.012345を3けたずつにわけて、違うセルに飛ばす関数

    昨日上記質問をし、下記にて回答を頂いたものです。(ありがとうございました。) http://oshiete1.goo.ne.jp/kotaeru.php3?q=1696559 =TRIM(MID(TEXT($A1*10^6,"???????????????"),(COLUMN()-2)*3+1,3)) との回答を頂き応用をしてみたのでが、未熟なもので上手く行きません。恥ずかしいです。。。 私は応用として、仮に「123,156,789.012345」等・・、と飛ばしたい数字をG列に入れ、関数を =TRIM(MID(TEXT($G1*10^6,"???????????????"),(COLUMN()-2)*3+1,3)) とG列絶対参照に設定して、H列~コピーすれば良いのだなと思い込んだのですが、上手く行かないんです。 やり方がまずい可能性はかなり大きいのですが(´;ェ;`)、元となる数字がどの列に来ても、3桁ずつに分割して表示するには、教えて頂いた関数の、どことどこを変えれば良いのでしょうか?もしくは、他の関数を使わないといけないのでしょうか? 説明が下手ですみません。宜しくお願いいたします。

  • エクセル2010のSUMIFS関数について

    A列に日付、C列に文字列、E列に数値があります。 仮に、日付は2013年4月だけ、文字列は”事務” だけに条件を絞ってE列の数値を合計する場合、エクセル2000では =SUMPRODUCT((C$1:C$1000="事務")*(TEXT(A$1:A$1000,"yyyymm")="201304")*E$1:E$1000) でうまくいきました。 こんどエクセルが2010になったので、あたらしくできたSUMIFS関数でやってみようと思い =SUMIFS(E:E,C:C, ”事務”,TEXT(A:A,"yyyymm"),”201304”) としましたが「数式が正しくありません」とエラーになってしまいます。 SUMIFS関数だと列のセル範囲を指定しなくていいので使いたいのですが・・・。 F列を作業列とし、ここにA列の日付をyyyymm形式の文字列とすれば =SUMIFS(E:E,C:C,"事務 ",F:F,"201304") で出来ますが、ほかにいい方法はないでしょうか?

  • エクセル

    エクセルで下記の計算方法を教えてください。 例えば…A1のセルに 01023(No.なので文字列としています)     A2のセルに 01052(No.なので文字列としています)     A2-A1を計算したいのですが、A1セルの01023も合計数に     入れたいのです。     使用する関数は、IF関数でしょうか?

  • EXCELの関数について教えてください

    セルに入力されている文字列の頭に特定の文字列を同じセル内に追加したい作業があるので、以前の回答履歴の中に「CONCATENATE関数 VALUE関数を使うと良い」と言う内容のものがあったので、試してみたのですが、どうもうまくいきません。ちなみに作業内容はセル内に入力されている電話番号の頭に「8」とか「6」をつけていきたいのです。入力されてる書式設定は「文字列」で「○○-○○○○」というふうに全角で入力されています。書式設定を「文字列」にしてるのがいけないんでしょうか。

  • エクセル2003で関数の組み方を教えてください。

    エクセル2003で関数の組み方を教えてください。 A1セル  EE02 B1セル  02059 この2つのセルを&で合体しEE02-02059と表示させたいのです。 =A1&”-”&B1と入れれば、B1のセルの書式を文字列にしても「EE02-2059」と表示されます。 B1のセルは頭が0だけであれば”-0”入れたらよいのですが、1や2の場合があるので教えてください。よろしくお願いします。

  • EXCEL 2010 VBAまたは関数について

    こんにちは 初投稿です。 早速ですが、VBAまたは関数について質問させて頂きたいのですが・・・ 一つのセルに複数の数字と文字列がセルのE1混ざっている場合, (12345abc678cdef9ghijk)と入っている場合 にこの例で行くとセルのA1に12345セルB1に678セルC1に9というように数字で表示させたいのです が、最初関数で A1=VALUE(MID(E1,1,5)) B1=VALUE(MID(E1,9,3)) C1=VALUE(MID(E1,16,1)) と言う形で数字だけ抜き出していたのですが これだと数字の桁数が違ってくる(※正し文字列の長さは一緒 数字だけが桁が違ってきます) と表示されなくなってしまうため、 出来れば関数をいじらなくても表示されるようにしたいのです。 VBAもしくは関数でこの問題を解決出来る方がいらっしゃるなら どうぞよろしくお願い致します。 長文失礼致しました。 | A | B | C | D | E | ------------------------------------------------ 1 | 12345 | 678 | 9 | | 12345abc678cdef9ghijk | 2 | | | | | |

  • こんな関数ありますか? N関数??

     前任者が作った関数式で不思議なものがありました。 A列(数値) B列(文字列) C列(式:数値)   1000      0300    =N(A2)-N(B2) この、N は一体なんでしょうか? 文字列を計算するための関数式と、(前任者が)説明されたそうですが、 普通は書式を変えるか、VALUE関数などを使うと思うのですが… ネットや書籍など、調べてみたのですが、 見つけられなかったので、ご存知の方がいらっしゃれば、 「そんなものないよー」ということでもいいので、教えて下さい。

  • Excelの関数で困っています

    お願いします。 求めたい式は A列が空白でB列も空白だったら"空白" A列又はB列のどちらかでも文字が入っていたら"入ってる" A列とB列の両方文字が入っている場合は"両方" と表示させたいと思っております。 IF関数を試みましたが、上手くいきません。 できれば全てを1行で表示できるようにしたいのですが、 無理ならば、2行又は3行になっても構いません。 関数の得意な皆様、どうぞよろしくお願い致します。

専門家に質問してみよう