• ベストアンサー

《エクセル2000》LEN関数の謎?

2つのセルに、 2004/2/3 2004/12/31 という値が入っています(表示形式は「平成16年2月2日」のような“日付”)。 それぞれ右隣のセルに =LEN(○○) という関数を入れてみた所、どちらも結果は5。 なぜでしょうか?

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

  • ベストアンサー
回答No.6

こんにちは。 日付の文字数を見た目どおりに数えるときは、 TEXT関数でその書式に合わせればいいと思います。 書式を 平成16年2月3日 のような形式にしているときは、 ↓にしてください。 ----------------------------- =LEN(TEXT(A1,"ggge年m月d日")) ----------------------------- 平成16年2月3日 → 9 平成16年12月31日 → 11 表示されたとおりの文字数が返ります。 日付の書式記号については参考URLをご覧ください。

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

お礼

この方法、いいですね。ありがたく使わせて頂きます。 どうもありがとうございました、助かりました。

その他の回答 (5)

回答No.5

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」となります。 何故かは、日付を入れてあるセルの書式設定を「日付」から 「標準」にしてみて下さい。

bari_saku
質問者

お礼

なるほど!とてもわかりやすいご説明でした。 ありがとうございました。

  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.4

日付はシリアル値で記載されています。 セルの書式設定を見て下さい。 「日付」になっていますよね? これを「標準」にすると5桁の数字になります LEN関数は、この書式による表示上の見え方ではなく、元のデータの文字数をカウントしているわけです。 2004/2/3 → 8 2004/12/31 → 10 と返したいのであれば、セル書式を文字にしましょう。

bari_saku
質問者

お礼

今回は残念なことに、和暦で指定がきていまして… (個人的には西暦の方がいいと思うのですが) ですがご回答、どうもありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

日付時刻は内部シリアル値だから5桁数値です。試しに、該当セルの書式表示を標準に変更してください、その値が分かります。

bari_saku
質問者

お礼

「シリアル値」という言葉は知ってはいましたが、今回やっとどのようなものかわかりました。 どうもありがとうございました。

  • dac203
  • ベストアンサー率43% (92/212)
回答No.2

たぶんシリアル値で拾っているからだと思います。

bari_saku
質問者

お礼

そのようですね。 即答をありがとうございました。

noname#109516
noname#109516
回答No.1

2004/2/3はExcel内部では"38020"、2004/12/31は”38352"というシリアル値で、LENではその文字数を計算して5という結果になります。 その日付のセルの表示形式を標準にすればわかります。

bari_saku
質問者

お礼

納得しました。 丁寧なご説明、どうもありがとうございました。

関連するQ&A

専門家に質問してみよう