• ベストアンサー

Excel関数で日付の自動入力をしたい場合・・・

Excelの関数を用いて日付を自動入力できないものかと思いまして お詳しい方にご教授いただければと思うのですが A1 セルに”入力規則”で1月~12月まで選択できるようにしておいて ある月を選択すると A2~A32に自動で日付が入るようにできないでしょうか? 例 A1:4月をプルダウンから選択 A2:4/1 B2:火 (=TEXT(A2,"aaa")を使用してます) 以下31日まで自動入力 宜しくお願いいたします。

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

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

次の方法は如何でしょうか。 (1)セルの書式設定→表示形式でA2セルをm/d、B2をaaa (2)次の数式を入力後、A2:B2を選択して31行分下方向にコピー A2に=IF($A$1<>"",IF(DAY(DATE(YEAR(TODAY()),SUBSTITUTE($A$1,"月","")+1,0))<ROW(A1),"",DATE(YEAR(TODAY()),SUBSTITUTE($A$1,"月",""),ROW(A1))),"") B2に=A2

kabayaki69
質問者

お礼

mu2011様の数式で無事に完成しました。 有難う御座いました。

その他の回答 (1)

  • heinell
  • ベストアンサー率35% (420/1172)
回答No.2

まず閏年処理は必要ですか?ってのはありますが普通必要ですよね ですんでまず年の情報がどっかに必要になります。 例ではA1~A32・B2~B32が使用済みなんで仮にB1に年(西暦4桁)が入力されてると仮定します 1~28日までは絶対に表示されるのでそのままベタ書きでOKでしょう。 次に非表示(幅0)の列でC列があるとして、C30~C32にそれぞれ29から31までの数字を書いておきます。 となると、 例えば31日に相当するA32は =IF(ISERROR(DATEVALUE($B$1&"-"&$A$1&"-"&C32)),"",C32) これが方法1です。 DATEVALUE($B$1&"-"&$A$1&"-"&C32)が、30日(C31)ならばDATEVALUE("2008-4-30")で正常なんで、ISERROR関数はエラーじゃない=FALSEを返すので第二パラメータのC31の値=30が。 31日だとDATEVALUE("2008-4-31")で正しくない日付なんでエラーになってしまいます。ということでISERROR関数がTRUEとなるので第一候補の""(空白)が表示されます。 ただ、実のところERRORをアテにするとExcel関数の仕様変更があった場合にトラブルが発生することがあります。 (私はExcel2003で確認しましたが、将来のバージョンで「実は2008-4-31と指定されたら自動的に2008-5-1と解釈します」みたいな変更をされるとも限らないし、それは誰にも判らない) なんでERRORを使わない方法を考えるとなると =IF(DAY(DATEVALUE($B$1&"-"&$A$1&"-1")+C32-1)=C32,C32,"") これが方法2です。 まず最初にDATEVALUE($B$1&"-"&$A$1&"-1")。これで2008-4-1の日付シリアル値である39539が得られます。 で、次に2008-4-31…即ち、2008-4-1の30日後=31日後の1日前を求めます。(日付シリアル値=39569) その後にDAY関数で、その日付シリアル値から日だけを求めると、2008-4-1の30日後は2008-5-1なので「1」が帰ってきます。 で、最後に31と比較すると…違うので第二候補の""が表示されるって形になります。 あと、どっちにせよ曜日を表示しようとしているB30~B32も、A30~A32が空白だった時のためにIF文で回避する処理が必要です。 こんなんでいかがでしょうか?

関連するQ&A

専門家に質問してみよう