• ベストアンサー

エクセルで、月を入力すると日付と曜日が変わるようにしたい

昔、自分でも作成していたのに今ではすっかり忘れてしまいましたので恥を忍んで質問します。 西暦の年数を入力するセル その隣に月を入力するセル その下の行には日付が横並びに続き、 さらにその下の行には曜日が並ぶ。 毎月更新するようなシートなので 月を変更すると 日付と曜日がサーっとかわるようにしたいのです。 どうやって数式をいれますか? 教えてください。

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

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

>2日からになってしまいます。どうしてでしょう? ⇒C4の数式が「COLUMN(Bn)」になっていないでしょうか。COLUMN関数だけ相対参照にしていましたから数式を移動した際に変位したと思われます。  次の様に変更して下さい。  =IF(DATE($B$3,$C$3+1,0)<DATE($B$3,$C$3,COLUMN(A$1)),"",DATE($B$3,$C$3,COLUMN(A$1)))  COLUMN関数は列番号を戻してくれる関数です。  列方向というご要望からCOLUMN(A1)で1、COLUMN(B1)で2、というように1から連番を得る事で、日付として使用した次第です。  因みに行方向ならばROW関数となります。

rica19
質問者

お礼

感激しました!ありがとうございます。 エクセルっておもしろいですね もっと勉強したくなりました。 時間ができたらじっくりやりたいです。 たすかりました。 本当にありがとうございました。

その他の回答 (4)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.5

C4=DATE($B$3,$C$3,COLUMN()-2) C5=TEXT(C4,"aaa") ですね。 COLUMN()は数式のある列番号(A=1,B=2,C=3...AA=27)になります。 セルに関係なく1が欲しい場合はCOLUMN(A1)としてA1の列番号を表示させる形になります。 通常はCOLUMN()-数値で調整するほうが多いですけどね。 行方向で同じことを行なう場合はROW()を使います。 別の方法として C4=DATE($B$3,$C$3,1) C5=TEXT(C4,"aaa") D4=C4+1 D5=TEXT(D4,"aaa") でD列をコピーする方法もあります。

rica19
質問者

お礼

回答くださって、本当にありがとうございました。 皆様、すごく詳しいのですね。 やはりプログラムとかされてるのでしょうか。 頭が下がります。 また、自分もそうなりたいなと思いました。 感激しました。 ありがとうございました。 皆さんにポイントおつけしたいのですが、それもできず残念です。

  • gutoku2
  • ベストアンサー率66% (894/1349)
回答No.3

<表示のイメージ> 1行目 A列"年" B列"月" → 任意入力領域 2行目 A列"1日" B列"2日" C列"3日"・・・・AE列"31日" 3行目 A列"曜日"・・・・・・ このように表示する場合の設定方法  A1セル "年の任意入力" B1セル "月の任意入力"  A2セル =(VALUE($A$1&"/"&$B$1&"/"&1))  B2セル =IF(A2="","",IF(MONTH(A2+1)=$B$1,A2+1,""))     B2セルをコピー元、C2~AE2セルに貼り付け  A2セル~AE2セルの書式設定   セルの書式設定 - ユーザー定義 にて  d"日" を設定  A3セル =IF(ISERROR(TEXT(VALUE(A2),"aaaa")),"",TEXT(VALUE(A2),"aaaa"))  A3セルをコピー元、B3セル~AE3セルに貼り付け これで、A1セルに 2008 B1セルに 7 と入力すると A2セルに 1日 B2セルに 2日 ・・・・・ AE2セルに 31日 A3セルに 火曜日 B3セルに 水曜日 ・・・・・ AE3セルに 木曜日 と表示されます。

rica19
質問者

お礼

回答くださって、本当にありがとうございました。 皆様、すごく詳しいのですね。 やはりプログラムとかされてるのでしょうか。 頭が下がります。 また、自分もそうなりたいなと思いました。 感激しました。 ありがとうございました。 皆さんにポイントおつけしたいのですが、それもできず残念です。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

一案です。 A1に 2008 A2に  7 A3に =DATE($A1,$A2,COLUMN(A1)) A4に =A3 書式 ユーザー設定で aaaaに変更 A3とA4セルを 右へコピィ A3に =IF(COLUMN(A1)>DAY(DATE($A1,$A2+1,0)),"",DATE($A1,$A2,COLUMN(A1))) A4に =IF(A3="","",A3) にしておけば、31日(或いは30日)以降が空白です。

rica19
質問者

お礼

回答くださって、本当にありがとうございました。 皆様、すごく詳しいのですね。 やはりプログラムとかされてるのでしょうか。 頭が下がります。 また、自分もそうなりたいなと思いました。 感激しました。 ありがとうございました。 皆さんにポイントおつけしたいのですが、それもできず残念です。

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

一例です。 仮にA1に年、B1に月を入力とします。 (1)日付 ・A2のセルの書式設定→表示形式タブのユーザ定義でd又はddを設定 ・A2に=IF(DATE($A$1,$B$1+1,0)<DATE($A$1,$B$1,COLUMN(A1)),"",DATE($A$1,$B$1,COLUMN(A1)))入力、右方向に31日分コピー (2)曜日 ・A3のセルの書式設定→表示形式タブのユーザ定義でaaaを設定 ・A3に=A2を入力、右方向に31日分コピー

rica19
質問者

補足

早速ありがとうございます。 実際にはB3セルに西暦 C3セルに月 で、C4から日を横並びに続けたいのですが なぜか2日からになってしまいます。どうしてでしょう? ためしに別のシートでお答えの例えと同じセルに西暦、月をいれたらうまくいったんですが。。。 それとできましたらCOLUMNの意味とか教えてもらえないですか?

関連するQ&A

専門家に質問してみよう