• ベストアンサー

異なったセルに入っている「年」「月」「日」データから年月日データを生成する関数は?

お世話になります。 関数で以下のようなものを作りたいと思います。 セルA1,B1,C1にそれぞれ2008、8、4と「年」「月」「日」データが入っています。 D1に関数を入力することによってD1の内容を「2008/08/04」というように年月日のデータに換算したいのです。 次の条件を加えてください。 ●生成した年月日データが「日付としてありえないもの」にならないように、年、月、日の元データが入っているA1,B1,C1の内容については人為的チェックを行う。よって生成する関数側でそれらのチェックは不要。 (ただし、チェックも簡単にできるよ、という場合は盛り込んでください) ●生成されたデータを元にして曜日を求めたり、任意の2日を選んで経過日数を計算したり、和暦に変換するなどしたいので、「生成された結果そのものがすでに年月日型」であってほしい。 (よって単純に&マークで連結しただけではダメ・・・・ですよね) ●年月日の区切りは"/"記号で。月、日が一桁の場合は10の位に0を挿入していかなる日付も"/"記号含めて10桁で表記したい。 いただいたコメントには必ずお礼コメント差し上げます。 もっとも要望どおりの回答には必ずポイントを差し上げます。 よろしくお願いします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

D1セルに=DATE(A1,B1,C1)と入力します。表示は2008/8/4のように表示されますので「セルの表示形式」の「ユーザー定義」でyyyy/mm/ddと入力します。

s_end
質問者

お礼

ご回答ありがとうございました。 参考にさせていただきます。

その他の回答 (3)

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.4

こんにちは。 条件1.●生成した年月日・・・不要。(ただし、チェックも簡単にできるよ、という場合は盛り込んでください) 完全チェックとはなりませんが A1セルの入力規制で”整数”、”次の値以上”、”1900” B1セルは同様な方法で1~12の間 C1セルも同様で1~31の間 に規制する事である程度は可能。 この方法での問題は2月31日などを許す事。2,4,6,9月のチェックは無視です。 条件2.●生成されたデータ・・・年月日型」であってほしい。 これは他の回答者さんと同様 D1セルに =Date(A1,B1,C1) D1セル書式設定は yyyy/mm/dd aaaa ge/mm/dd もありかも? 条件3.●年月日の区切・・・10桁で表記したい。 条件2の書式設定にて解決。

s_end
質問者

お礼

ご回答ありがとうございました。 参考にさせていただきます。

  • P5Q
  • ベストアンサー率40% (86/210)
回答No.2

D1セルとして  =IF(OR(B1>12,C1>31),"???",A1&"/"&IF(B1<10,"0"&B1,B1)&"/"&IF(C1<10,"0"&C1,C1)) で、月が12より大きい場合または、日が31より大きい場合は???表示。  後は、ご希望通り。  E1セルに =DATEVALUE(D1) とするとシリアル値も出せます。

s_end
質問者

お礼

ご回答ありがとうございました。 参考にさせていただきます。

回答No.1

=date(年,月,日) ・チェックは自動。2009年8月0日は2009年7月31日になる。 ・当然日付シリアル値の出力 ・自分で書式を選択すること。"yyyy/mm/dd"でいいでしょう。

s_end
質問者

お礼

ご回答ありがとうございました。 参考にさせていただきます。

関連するQ&A