- ベストアンサー
《エクセル2000》LEN関数の謎?
2つのセルに、 2004/2/3 2004/12/31 という値が入っています(表示形式は「平成16年2月2日」のような“日付”)。 それぞれ右隣のセルに =LEN(○○) という関数を入れてみた所、どちらも結果は5。 なぜでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 日付の文字数を見た目どおりに数えるときは、 TEXT関数でその書式に合わせればいいと思います。 書式を 平成16年2月3日 のような形式にしているときは、 ↓にしてください。 ----------------------------- =LEN(TEXT(A1,"ggge年m月d日")) ----------------------------- 平成16年2月3日 → 9 平成16年12月31日 → 11 表示されたとおりの文字数が返ります。 日付の書式記号については参考URLをご覧ください。
その他の回答 (5)
- DoragonFang
- ベストアンサー率41% (91/221)
Excelでは日付は内部的に1900年1月1日を基準として、 1日を1と加算する連番で表されています。 したがって、2004/2/3は38020、2004/12/31は38352、となります。 そのため、LEN関数では5桁の数字のため、「5」と表示されます。 1900/1/1と入れてみて下さい。LEN関数は「1」になるでしょう? じゃあ、1901/1/1は? 「3」となります。 何故かは、日付を入れてあるセルの書式設定を「日付」から 「標準」にしてみて下さい。
お礼
なるほど!とてもわかりやすいご説明でした。 ありがとうございました。
- hirumin
- ベストアンサー率29% (705/2376)
日付はシリアル値で記載されています。 セルの書式設定を見て下さい。 「日付」になっていますよね? これを「標準」にすると5桁の数字になります LEN関数は、この書式による表示上の見え方ではなく、元のデータの文字数をカウントしているわけです。 2004/2/3 → 8 2004/12/31 → 10 と返したいのであれば、セル書式を文字にしましょう。
お礼
今回は残念なことに、和暦で指定がきていまして… (個人的には西暦の方がいいと思うのですが) ですがご回答、どうもありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
日付時刻は内部シリアル値だから5桁数値です。試しに、該当セルの書式表示を標準に変更してください、その値が分かります。
お礼
「シリアル値」という言葉は知ってはいましたが、今回やっとどのようなものかわかりました。 どうもありがとうございました。
- dac203
- ベストアンサー率43% (92/212)
たぶんシリアル値で拾っているからだと思います。
お礼
そのようですね。 即答をありがとうございました。
2004/2/3はExcel内部では"38020"、2004/12/31は”38352"というシリアル値で、LENではその文字数を計算して5という結果になります。 その日付のセルの表示形式を標準にすればわかります。
お礼
納得しました。 丁寧なご説明、どうもありがとうございました。
お礼
この方法、いいですね。ありがたく使わせて頂きます。 どうもありがとうございました、助かりました。