- ベストアンサー
エクセルで文字列が自動的に日付に変わる理由とLEN関数の挙動について
- エクセルで特定の文字列を入力すると自動的に日付に変換される理由について説明します。
- LEN関数を使用して文字列の文字数を取得する際、表示形式に注意が必要です。
- 文字列の表示形式が変わらない場合と変わる場合の違いについても解説します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
少し勘違いがあるようなので、セルの書式と数式の関係について説明します。 >例えば一つのセル内に 6-3 と入力すると自動的に日付になります。 >6+3としても表示形式が変わったりはしません。 これは標準書式に6-3や1-2-3のような日付と判断されるものが入力されるとエクセルが気を利かせて自動的に日付書式に変えるためです。 この場合、6-31のような文字列の場合は、そのような日付がないのでそのまま文字列として入力されます。 >一つのセルに7/4(日)となっているものをLEN関数で文字列の文字数を返すと、答えは当然6が返ります。 これは「7/4(日)」と文字列で入力した場合ですね。 >しかし、その6になった値に関して -3 を付け数式的には =LEN(A1)-3 とすると、答えは 1/3 となります。 エクセルでは数式で計算したとき、多分同じ形式の計算をするのだろうと気を利かせて参照元の書式と同じ表示形式で表示するようになっています。 したがって、元のA1セルの書式が日付で「3/14」に設定されていると「3」に対応するシリアル値の日付、すなわち1900年1月3日が、設定された表示形式で表示されることになります。 >LEN関数で同じ6が返るように仮に AAAAAA として、 -3をつけたし =LEN(A1)-3 としても、答えは 3にしかなりません。勝手に表示形式は変わりません。 この場合も参照元の書式が「標準」だから変化がないのです。 良くあるケースですが、もし、文字列書式にしていた場合には、1回目の数式入力時は計算値を正しく表示していますが、そのセルが自動的に「文字列」書式に変わっているため、数式を再入力すると、計算式が文字列となり、正しく作動しなくなりますので注意が必要です。
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
エクセル本来の機能として7/4や7-4などと入力すればセルの表示形式は自動的に標準から日付に変わります。 一旦表示形式が日付に変わりますと自動的に表示形式が標準に戻ることはありません。 表示形式が日付に変わったままのセルに=LEN(A1)-3を入力しても表示形式は日付ですので表示形式が標準では3でも1/3のように日付の表示形式で表示されますね。 セルの表示形式を標準にしてから=LEN(A1)-3を入力すれば3と表示されますね。
お礼
ご回答ありがとうございます。 今まで日付の入力をするときは 7/1 としか入力したことがなかったので、7-1でも日付として認識してくれる、というのは初めて知りました! 原因が分かったのですっきりしました。ありがとうございました。
- mar00
- ベストアンサー率36% (158/430)
数式を入力したセルの書式に日付の書式が 設定されているのではないでしょうか。 書式を標準にすれば3に変わると思います。
補足
ご回答ありがとうございます。 書式を変更すれば3に変えることはできます。 私が疑問に思っていることは、なぜ自動で変換されることがあるのか、という意味です。 もともとすべて標準の書式設定でも自動に変わります。
お礼
ご回答ありがとうございます。 自分でも操作してみて、もしかして、、と思ったのですが、 >気を利かせて参照元の書式と同じ表示形式で表示するようになっています。 気を利かせてくれるのですね。エクセルってやっぱり賢いソフトと改めて感じました。 謎が解けました。ありがとうございました。