• ベストアンサー

EXCELで月ごとに曜日と日付を自動入力する方法。

EXCELで勤務表を作っています。 8月期勤務表   1 木 2 金 3 土 4 日 ・・・とこのように作りたいのですが、 上にある8月期の8を参照して、日付と曜日を自動で切り替える 方法はありませんでしょうか。 マクロでは可能なようなのですが、EXCEL97 を使うので、関数でなんとか実現できればと 思っています。お知恵をお貸しくださいな。

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

  • ベストアンサー
  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.4

時間かかったなぁ。 問題は29日以降でした。月によってはエラーが出ますんで。 2002年 8月度勤務表 1日(木) 2日(金) ・ ・ 入力するのは、セルA1に「2002」セルA2に「8」のみ。 日付と曜日は自動表示、さらに土曜と日曜に色づけしましょう。 数式の入力 A3には「=DATE(A1,A2,1)」B3には「=A3」とします。 A3をA30までコピーして、B3をB33までコピー。 A31には「=IF(MONTH($A$30+1)=$A$2,$A$30+1,"")と入力してA31をA33までコピー。 セルの書式設定 ユーザー定義で、A3からA33までは「d"日"」B3からB33までは「(aaa)」に設定。 色分け A3からA33を範囲指定した上で、書式→条件付書式と開いて、「条件(1)」を「数式が」にして「=WEEKDAY(A3)=1」のときに文字列が赤くなるように設定。続いて「条件(2)」 を「数式が」「=WEEKDAY(A3)=7」の時に文字列が青くなるように設定。B3からB33も同様に。 ダメ?

7_11shop
質問者

お礼

これはすごいですね。 みごとにできましたよー。 はじめて、マクロを使った、勤務表を見たとき 日付の自動入力もさることながら、勤務時間までが自動入力されることに 正直驚いたんですよ。EXCELでこんなにすごいことができるのかと。 いったいどういう仕組みでできているのかと興味を持ったのですが、 自分で実現できるわけもなく、そのまま使っていました。 しかし、このたび、教えてGOO!のおかげで自分でも少しながら 仕組みを理解しながら、作ることができました。 マクロでは可能でも関数では不可能だと思っていましたし、 また、関数のみで作成したものをお目にかかったこともありませんでした。 それが今ここで作成できました。そう、あの時驚いたのと同じ機能が関数のみで。非常にうれしい気持ちでいっぱいです。また、関数に対しての可能性をすごく感じました。ありがとうございました。

その他の回答 (5)

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.6

げ、間違えた。#4のはげおやぢです。 A4に「A3+1」を入れてそいつをA30までコピーしなくてはなりませんでした。 申し訳ありません。

  • moccos
  • ベストアンサー率43% (61/140)
回答No.5

人によって様々な方法があるものですね!感心しました。 当方は以下のようにしてます参考になれば幸いです。 A        B    C          8   月集計表 2002/8/1     1     木 2002/8/2     2     金 2002/8/3     3     土 のようにB1のセルを参照してA列に年月日を自動入力します。 (A列は非表示にして印刷範囲からもはずします) A2セルには「=IF(B1="","",B1)」 A3セルには「=IF(A2="","",A2+1)」 いずれもB1セルに入力が無い時のエラー防止です。 B1には「2002/8」と入力して(来年も使えるように)ユーザー定義表示形式で「m」とし「8」だけ表示する。 B2セルには「=IF(A2="","",DAY(A2))」でB29までオートフィル B30セルには「=IF(A30="","",IF(DAY(A30)<10,"",DAY(A30)))」でB32までオートフィル C2セルには「=IF(B2="","",TEXT(A2,"aaa"))」でC32までオートフィル 2月や月末が30日の月でも修正しなくて済みます。 曜日によって色をつけるのは#4さんとほぼ同じ手法を使ってます。 では。

7_11shop
質問者

お礼

こちらでもできました。 私にとっては、これが作れる人は、魔法使いのような 存在に感じますが、少しづつ自分でも理解していきたいです。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#1,#2のご解答と似たりよったりですが A1セルに「8」、B1セルに「月集計表」が入っているとして、A2に「=DATE(2002,$A$1, ROW()-1)」といれる。 A3以下フィルハンドル・右下+を引っ張って月末まで複写。 B2セルに「=TEXT(A2,"aaa")」といれる。 B3以下フィルハンドル・右下+を引っ張って月末まで複写。 row()-1の-1は適当に合わせて設定してください。

7_11shop
質問者

お礼

ありがとうございます。 できました。ただ、やはり、日付の自動入力 という点でネックでした。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

こんにちは。 A1に 8/1 と入力後、セルの書式設定で表示形式を m"月期勤務表" にします。 A3に =A1 と入力後、セルの書式設定で表示形式を d"日("aaaa")" にします。 A4に =A1+1と入力し、フィルハンドルで下にコピーして行きます。

7_11shop
質問者

お礼

ありがとうございます。 できました。ただ、やはり、日付の自動入力 という点でネックでした。

  • m-happy-t
  • ベストアンサー率30% (72/239)
回答No.1

8をA1で1をA2と仮定してます。 後は自分の表にあうようにA1、A2を変更してください =TEXT(DATE(2002,A1,A2),"aaa") aaaaとすると木曜日になります エクセル97での確認は取れません(エクセル97がない為)

7_11shop
質問者

お礼

すばらしい! できました。ありがとうございます。

関連するQ&A