- ベストアンサー
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 となることを期待していたのですが… 気になって眠れないのです(^_^)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
先にも回答したものですが /は割り算の演算子でもありますので !を前につけてただの記号だと宣言する必要があります。 =TEXT(A1,"0000!/00!/00") または =TEXT(A1,"0000""/""00""/""00") とすれば 2006/01/21 となり数値化すればシリアス値に変換されます。
その他の回答 (4)
- fukkyse
- ベストアンサー率32% (130/402)
セルの書式設定の表示形式で不可能なものはダメだから。 「数字/数字」は分数としての表示方法。 日付を表す場合は「yyyy/mm/dd」で数字じゃない。 従って、文字列を返す関数は#4様の方法となります。 「=TEXT(A2,"00-00-00")*1」としてセルの書式を「yyyy/mm/dd」とすれば、2006/01/21と表示できます。 日付については、文字列よりもシリアル値のほうが使い勝手がよいと思います。 日付表示の参考を貼っておきます
お礼
了解しました。ありがとうございました。
- ttyp03
- ベストアンサー率28% (277/960)
TEXT関数の2番目のパラメータに指定できる文字には決まりがあります。 これがセルの書式設定にあるユーザー定義に指定できるものと同じです。 http://hp.vector.co.jp/authors/VA014071/tips/celfrmt.html これを見ますと / (スラッシュ)は除算記号の表示に用いることになっています。 つまり分数は x/y という形式ですから、x/y/z という形式では表示できません、という意味でエラーになっているのだと思います。 試しに / をひとつにすればエラーは出ません。 要は日付用の記号ではなく除算用の記号なので、こういう用途では使えません。
補足
》 要は日付用の記号ではなく除算用の記号なので、こ 》 ういう用途では使えません それで納得せざるを得ないようですが、「/」は日付の区切り記号でもあるので、イマイチ得心が行きません。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
書式設定の文字列で「/」は少数部分の分数表記です。従って、数値 20060303.25に書式"0.0/0"を適用すると、表示は20060303.1/4にな ります。 で、「/」が複数現れるのは分数としておかしいので、エラーになる わけです。
補足
う~む、そうですか。 「/」は年月日の区切り記号としてもお馴染みですけど… 》 「/」が複数現れるのは分数としておかしい… 除算としてならおかしくないけど、この場合は分数ですかぁ。
- akio_myau
- ベストアンサー率34% (515/1480)
0000/00/00と0の除算として認識してしまうために #DIV/0#となってしまい、 #VALUEとなっているのだと思います。
補足
「/」が「除算として認識」なら、「-」が減算として認識されても良さそうですが…
お礼
mshr1962さん、 》 !を前につけてただの記号だと宣言する必要がありま 》 す 「!」の意味を知らないでいました。勉強になりました。 》 =TEXT(A1,"0000""/""00""/""00") なるほど。「!」方式の方が分かり易いです。 お蔭様で、喉に支えていた小骨が取れた感じでスッキリしました。 ありがとうございました。