- 締切済み
エクセル2007でのカレンダー作成
エクセルでカレンダーを作成したいのですが、関数がわからず悩んでいます。 カレンダーといっても七曜日のものではなく、月曜日から金曜日までの五日間を繰り返すものです。(勤務体系の資料に使うものです) セルC3に年・月を入力し、その後D3~Z3~AB3の合計25セルに「日付」が、D4~Z4~AB4の合計25セルに「曜日(月~金の繰り返し」を出すことは可能でしょうか? 25セルあるのは、平日五日間×五週間=25セルとなっています。週に合わせて日付が反映されるようにしたいのです。 たとえば、今年の11月の場合だと、3日・月曜日は二週目になるので、二週目月曜日の位置(I3)の位置に3と表示されるように、12月の場合だと、一週目月曜日の位置(D3)の位置に1と表示されるようにしたいです。 加えて、日付が埋まらないセルは、下段の曜日と一緒に空白のセルになるようにしたいです。 ご指導よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- hallo-2007
- ベストアンサー率41% (888/2115)
C3セルには 11/1とシリアル値で初日を入力、表示形式 ユーザー定義で mm"月" D3セル =C3-WEEKDAY(A1)+2 E3セル =IF(WEEKDAY(D3)=6,D3+3,IF(WEEKDAY(D3)=7,D3+2,D3+1)) 書式 d 右へコピィ D4セル =D3 書式 ユーザー定義 aaa 右へコピィ D3~AB4選択して 条件付書式 数式が =MONTH($C$3)<>MONTH(D$3) フォント 文字の色を白 でご希望になりませんか?
- BrueBreeze
- ベストアンサー率52% (83/159)
セルC3にはその月の初日を入力してあって(今年の11月なら、2008/11/1)表示形式で年月の表示にしてあるとして D3には =DATE(YEAR(C3),1,(WEEKNUM(C3)-1)*7) この式を入れれば、その月の第1週の日付が出るはずです(ほとんどの場合前月の最終週の月曜日になります。) これが出せればあとはどうにでもなります E3~H3には左隣のセル+1、I3にはD3+7 等しながら、稼働日の列を作っていってください 日付のみの表示にしたければ、表示形式で日付のみの表示になるようにしてください。 あとは、C3に表示されている月以外のものを表示させたくないなら MONTH関数を使って C3セルの月の値と該当セルの月の値を比較すればOK 例:MONTH($C$3)<>MONTH(D3) IF関数でも条件付き書式でフォントの色を白にする方法でもいけると思います。
- gyouda1114
- ベストアンサー率37% (499/1320)
ANo.2、3です >11月だと、3日が基準日になり、週で数えると第二週目と判断してもらいたいのですが、難しいですかね…。 ANo.1さんの補足を読み落としてました C3の基準日に2008/11/3と入力 D3に =WORKDAY($C$3,COLUMN(D3)-4) E3からAB3までドラッグ 表示形式をm/d(11/3) >D4~Z4~AB4の合計25セルに「曜日(月~金の繰り返し」を出すことは可能でしょうか?< D4セルに =D3とし表示形式を(aaa)E4からAB4までドラッグ お試しを
補足
何度もご回答いただきありがとうございます。 曜日の表示に関しては、固定され動くことがないので =IF(D3=0,"","月")という式を入れ、 上に日付が入っていなければ、何も表示されないようにしました。 ありがとうございました。
- gyouda1114
- ベストアンサー率37% (499/1320)
>作業行4のD4からAB4までに1~25を入力 ↑稼働日数ですとこれで問題ないですが、表示させたいのは「日付」です。< 作業列の1~25は、11/1から数えた月から金の数です。 =WORKDAY($C$3,D4) は、11/1(土)に1を加えるための数値です。 日付はD3からAB3に日付が表示されます。 作業列を使わない方法です WEEKDAY関数とCOLUMN関数(列番号を参照する)を使います。 COLUMN(D3)-3)は、D3の列番号4からA,B,Cの3を引くという意味です 例えばC3に基準の日 2008/11/1と入力表示形式をge.m(H20.11) D3セルに =WORKDAY($C$3,COLUMN(D3)-3) E3セルからAB3までオートフィル 表示形式をm/d(aaa)(11/3(月)) お試しください
- gyouda1114
- ベストアンサー率37% (499/1320)
他に方法あるかもしれませんが WEEKDAY関数と作業行を使います。 例えばC3に基準の日 2008/11/1と入力表示形式をge.m(H20.11) 作業行4のD4からAB4までに1~25を入力 D3セルに =WORKDAY($C$3,D4) E3セルからAB3までオートフィル 表示形式をm/d(11/3) お試しください
補足
ご回答ありがとうございます。 作業行4のD4からAB4までに1~25を入力 ↑稼働日数ですとこれで問題ないですが、表示させたいのは「日付」です。 曜日に関しては「=WEEKDAY」の関数を応用すればできそうです。 ありがとうございます。
- will_mania
- ベストアンサー率36% (177/482)
そうすると土日のセル(列)は必ず固定されますよね? 非表示にされたらどうですか? あと毎月1日の日だけ目的のセルに入力して右隣は=○(左隣のセル)+1で結果を果得られませんでしょうか?
補足
さっそくのご回答ありがとうございます。 土・日のセルは使用しないので作っていません。非表示と言う方法もありましたね。 一日(ついたち)の日付の位置が毎月変わる(月曜日だったり・木曜日だったり)ので悩んでいます。加えて、基準にしたいのが一日(ついたち)ではなく、その月の最初の月曜日です。 11月だと、3日が基準日になり、週で数えると第二週目と判断してもらいたいのですが、難しいですかね…。
お礼
アドバイスありがとうございました。 出していただいた案を実行してしてみましたが、これだ!というのは 残念ながらありませんでした。 やはり日付一つの入力で、第何週目かまで判断させるのは難しいですね。 手入力で地道にすることにします。