みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

EXCELで勤務表を作っています。

8月期勤務表

 
1 木
2 金
3 土
4 日

・・・とこのように作りたいのですが、
上にある8月期の8を参照して、日付と曜日を自動で切り替える
方法はありませんでしょうか。

マクロでは可能なようなのですが、EXCEL97
を使うので、関数でなんとか実現できればと
思っています。お知恵をお貸しくださいな。

投稿日時 - 2002-08-25 02:12:42

QNo.342987

暇なときに回答ください

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

時間かかったなぁ。
問題は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も同様に。

ダメ?

投稿日時 - 2002-08-25 08:35:56

お礼

これはすごいですね。
みごとにできましたよー。
はじめて、マクロを使った、勤務表を見たとき
日付の自動入力もさることながら、勤務時間までが自動入力されることに
正直驚いたんですよ。EXCELでこんなにすごいことができるのかと。

いったいどういう仕組みでできているのかと興味を持ったのですが、
自分で実現できるわけもなく、そのまま使っていました。

しかし、このたび、教えてGOO!のおかげで自分でも少しながら
仕組みを理解しながら、作ることができました。

マクロでは可能でも関数では不可能だと思っていましたし、
また、関数のみで作成したものをお目にかかったこともありませんでした。

それが今ここで作成できました。そう、あの時驚いたのと同じ機能が関数のみで。非常にうれしい気持ちでいっぱいです。また、関数に対しての可能性をすごく感じました。ありがとうございました。

投稿日時 - 2002-08-25 12:35:02

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

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

投稿日時 - 2002-08-25 10:28:17

ANo.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さんとほぼ同じ手法を使ってます。

では。

投稿日時 - 2002-08-25 09:28:27

お礼

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

ありがとうございました。

投稿日時 - 2002-08-25 12:37:40

ANo.3

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

投稿日時 - 2002-08-25 07:01:26

お礼

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

投稿日時 - 2002-08-25 12:27:22

ANo.2

こんにちは。

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

投稿日時 - 2002-08-25 02:38:18

お礼

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

投稿日時 - 2002-08-25 12:26:33

ANo.1

8をA1で1をA2と仮定してます。

後は自分の表にあうようにA1、A2を変更してください

=TEXT(DATE(2002,A1,A2),"aaa")

aaaaとすると木曜日になります

エクセル97での確認は取れません(エクセル97がない為)

投稿日時 - 2002-08-25 02:36:30

お礼

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

投稿日時 - 2002-08-25 11:55:36

あなたにオススメの質問