• 締切済み

エクセル2003 週5のカレンダー

週5のカレンダーを関数かマクロで作れないでしょうか? 質問で、同じ質問を探してみたんですが、見当たりません。 イメージとしては、 A1に西暦で「年」 B1に「月」 を入力すると、自動に日付を表示させたいのです。 因みに、A2、B2、C2、D2、E2、F2、G2は「曜日」を 固定で入力しておきます。 ほとんどのカレンダーは、 週6で作られていますが、 私が作りたいのは、週5です。 以下のイメージは、 実際のカレンダーとは違いますが、 例えると、30日と31日が6週目になる月は、 1週目の頭に持っていきたいんです。 ※表示上「_(アンダバーを入れてあります)」 _____(A)__(B)__(C)__(D)__(E)__(F)__(G) (1)_2010__3 (2)__日___月_____火____水____木____金___土 (3)__30___31_________________________________1 (4)___2____3_______4_____5______6_____7_____8 (5)___9___10______11___12_____13___14___15 (6)__16__17______18___19_____20___21___22 (7)__23__24______25___26_____27___28___29 他の質問を見て、試してみたんですが、 上手く行きませんでした。 さらに、土・日・祭日のセルの色を 自動に背景色が自動に黄色にできるといいのですが・・・。 アドバイスがありましたら、 よろしくお願い致します。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! 余計なお世話になると思いますが・・・ セルの書式設定の表示形式はユーザー定義から  d としておいてくださいね。 当然お気づきだと思いますが、何もしなかったらシリアル値が表示されます。 どうも何度も失礼しました。m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! かなり強引な方法になります。 6週ある月の場合は6週目を第1週に持ってくるというところがかなり難しくなりますので、 ↓の画像で無理矢理作ってみました。 第1週目と第2週目以降の数式が変わってしまいます。 尚、祝日のデータはJ2~K23にあるものとします。(今年と来年分の祝日データです) 画像ではD1セルに =DATE(A1,B1,1) として、その月の一日を表示させておきます。 A4セルに =IF(AND(COUNT($A$9:$B$9)>0,COUNT($A$9:$B$9)>=COLUMN(A1)),A$9,IF(MONTH($D$1-WEEKDAY($D$1)+COLUMN(A1))=$B$1,$D$1-WEEKDAY($D$1)+COLUMN(A1),"")) という数式を入れ、セルの条件付書式から 「数式が」→数式欄に =AND(A4<>"",COUNTIF($J$2:$K$23,A4)) として、「黄色」を選択しています。 このA4セルを土曜日のG2セルまでコピーします。 そして、2週目のA5セルに =IF(MONTH($D$1-WEEKDAY($D$1)+COLUMN(A1)+7*ROW(A1))=$B$1,$D$1-WEEKDAY($D$1)+COLUMN(A1)+7*ROW(A1),"") とし、条件付書式で前述同様の数式を入れます。 このA5セルを列方向と行方向にオートフィルでコピーします。 今回は第6週目までコピーしておきます。 そして、第6週目のフォントの色を「白」にして、見た目では表示していないように見せます。 これで祝日の場合はセルの色が「黄色」になります。 最後に日曜日のA3~A8セルを選択して、フォントの色を「赤」 土曜日のG3~G8セルを選択してフォントの色と「青」にしています。 これで何とか希望に近い形にならないでしょうか? 以上、長々と書きましたが 参考にならなかったら読み流してくださいね。m(__)m

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

○投げですか・・・・! 少しは自分で勉強しましょう! >さらに、土・日・祭日のセルの色を >自動に背景色が自動に黄色にできるといいのですが・・・。 祭日の処理はちょいと敷居が高いですが 検索すれば、沢山出てきますよ 土日は、条件付き書式で対応できるのでパス 問題は5週の変則的なカレンダだと思ったのですが やってみると意外とあっさり出来たので サンプルで提示しておきます Sub test() Dim x, y, i Dim mDate As Date mDate = DateSerial(Range("a1").Value, Range("b1").Value, 1) Range("a3:g7").ClearContents i = Weekday(mDate) For x = 3 To 7 For y = 1 To 7 If x > 3 Or (x = 3 And i <= y) Then Cells(x, y).Value = mDate mDate = mDate + 1 End If If Range("b1").Value <> Month(mDate) Then Exit Sub Next y Next x If Range("b1").Value = Month(mDate) Then For y = 1 To 7 Cells(3, y).Value = mDate mDate = mDate + 1 If Range("b1").Value <> Month(mDate) Then Exit Sub Next y End If End Sub 参考まで

関連するQ&A

  • カレンダーを作成するに当たって

    エクセル2003です。 年間のカレンダーを作成しています。 A1 B1 C1 D1 E1 F1 G1 日 月 火 水 木 金 土 と曜日を固定した場合 年 もしくは月によりセルの位置が変わります。 この時何か良い方法があるのでしょうか。 例えば 2009/1/1は木曜日で「E1」のセルからスタートするとカレンダーが見やすくなるので何とかしたいのですが。 どうかご指導ご協力のほど宜しく御願いします。

  • excelカレンダーに集計表

    この掲示板にて、カレンダーの作り方を拝見しました。 カレンダー日付の下に毎日累計値を入れていき、 その下に当日分の使用量が出るようにしたいのですが、 未熟者の為、月の変わり目が流動的でうまく式がたてれません。 ご教授の程よろしくお願いします。 今回参考にさせて頂いたカレンダーの元は下記のものです tazsan転用申し訳ありません。 D1に年(2004)、D3に月(12)と入力します。 一行あけてA5からG5までに、日・月・火・・・と曜日を A6 第一週日曜日 =IF(WEEKDAY(DATE($D$1,$D$3,1))=1,1,"") B6 第一週月曜日 =IF(ISNUMBER(A6),A6+1,IF(WEEKDAY(DATE($D$1,$D$3,1))=2,1,"")) C6 第一週火曜日 =IF(ISNUMBER(B6),B6+1,IF(WEEKDAY(DATE($D$1,$D$3,1))=3,1,"")) D6 第一週水曜日 =IF(ISNUMBER(C6),C6+1,IF(WEEKDAY(DATE($D$1,$D$3,1))=4,1,""))   ・   ・  以降、 A7 第二週の日曜日 =G6+1 B7 第二週の月曜日 =A7+1 C7 第二週の火曜日 =B7+1 ・・・という風に、第四週の土曜日までは前日に+1する計算式を書きます。 第五週は最終週なのですこし違います。 A10 第五週の日曜日 =IF(G9+1<=DAY(DATE($D$1,$D$3+1,1)-1),G9+1,"") B10 第五週の月曜日 =IF(ISNUMBER(A10),IF(A10+1<=DAY(DATE($D$1,$D$3+1,1)-1),A10+1,""),"") C10 第五週の火曜日 =IF(ISNUMBER(B10),IF(B10+1<=DAY(DATE($D$1,$D$3+1,1)-1),B10+1,""),"") D10 第五週の水曜日 =IF(ISNUMBER(C10),IF(C10+1<=DAY(DATE($D$1,$D$3+1,1)-1),C10+1,""),"")         ・         ・ これで、年と月を書き換えると日付が自動表示されるようになります

  • エクセルでカレンダー

    下記の物を回答から調べて試してみたのですが、例えば 2008年 9月(他の月でもいいのですが)、日にちが1日ずれてしまいます 2008年9月1日は(月)なのに日曜日になってしまいます 何処か間違っているのでしょうか?    A   B   C   D   E   F   G 1  2006  9 2  日  月  火  水  木  金  土 3               1   2   3 4   4   5   6   7  8   9   10 5  11  12  13  14  15  16  17 6  18  19  20  21  22  23  24 7  25  26  27  28  29  30 ◆A1に「西暦年」、B1に「月」を入力します A3の式 A3=IF(MONTH(DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1),2)+7*(ROW(A1)-1)+COLUMN(A1))=$B$1,DATE($A$1,$B$1,1)-WEEKDAY(DATE($A$1,$B$1,1),2)+7*(ROW(A1)-1)+COLUMN(A1),"") ★右と下にコピー

  • Excelでカレンダー

    Excelでカレンダーを作成しており、どうしても一つの曜日に2列使用の為、B7~O7迄 B.Cセルを結合して「日」(日曜日)とします。 後、D.Eセル結合・・・とO7迄、同様です。 B.Cの結合セルに データー ~ リスト ~ 日 , 月 を入力してありどちらか 選択出来る様になって尚克、条件式書式で 「日」の時は赤字で塗りつぶしもピンクになる様になっています。   D.E結合セル~N.O結合セル迄は B.C結合セルを「日」「月」どちらか選択すると自動的に以下、曜日が変化する様、各セルに =MID("月火水木金土日",COLUMN()-($B$7="日"),1) ・・・という計算式を入れました。   でも、この場合、2列を結合している為、B.C結合セルを「日」の場合、 D.E結合セル=「水」 F.G結合セル=「金」 H.I結合セル=「日」 J.K結合セル以降は表示無しです。 やはり、1列ずつでないと正しく月~土の様、順番にならないのでしょうか?  もし、出来る方法がありましたら教えて下さい。 宜しくお願いします。

  • 月によって一週目の数式を変化させるカレンダー

     ABCDEFG 1   2 2日月火水木金土 31234567 4 【最終質問内容】 D3において、 もし、D1が4か7の時、1を入れる。それ以外の時、 さらにもし、左のセル(C3)が空白の時、空白にする。それ以外の時、C3+1の結果を入れる。 【内容】 ・2009年のカレンダーを作っています。 ・バージョンは、Excel2000です。 ・D1は月の数字で、1~12を手打ちで入れると、月から1日目の曜日を設定して2日目からは+1をしていく。 という仕様を目指しています。 【質問】 ・「月を入れたら1日が来るセルの数式」について、行き詰ったのでご質問させていただきます。 例えば上図は2月の例ですが、2月は日曜で始まるので、 A3には、if(D1=2,1,"")となります。 ですが、日曜で始まる月は3月と11月もあるので、 if(or(D1=2,D1=3,D1=11),1,"")になります。 同様に、一週目(3の列)を設定すると、 B3 if(D1=6,1,"") C3 if(OR(D1=9,D1=12),1,"") D3 if(OR(D1=4,D1=7),1,"") E3 if(OR(D1=1,D1=10),1,"") F3 if(D1=5,1,"") G3 if(D1=8,1,"") となります。 これをさらに、 B3からG3の""の部分に、「2日目からは+1」という設定を入れなければなりません。 D3セルを例として、条件をまとめますと、 「もし、D1が4か7の時、D3に1を入れる。それ以外の時、 さらにもし、左のセル(C3)が空白の時、空白にする。それ以外の時、C3+1の結果を入れる。」 としたいのです。 何か良い方法はないでしょうか? よろしくお願いします。

  • エクセルでカレンダーを作りたいのですが。

    エクセル2003を使用しています。 次のようなカレンダーを作成したいと思います。 A1に2006などの年、A2、B2~に3/6などの月日、そしてA3、B3~に曜日(月、火…)の入ったカレンダーです。 A1の「年」やA2の「月日」を変更したら自動的に日にち(30日まで31日まで)や曜日が変わるようにするにはどうしたらいいですか? よろしくお願いします。

  • [カレンダー] その月の第1週の定義みたいな物

    こんにちは。 壁にあるカレンダーを見ていてふと思ったので、お伺いします。 ”次回の打ち合わせは8月の第1週の何曜日”というような、やりとりがあります。 今年、7月・8月のカレンダーを見ると、7月の最後の週は「29(日),30(月),31(火)」 そして、8月の最初の週は「1(水),2(木),3(金),4(土)」となっています。 質問です。 1. この場合、7月の最後の週は、7月の第5週と言いますか? それとも、8月の第1週と言いますか? もしくは、両方(その月ごとに言う・つまり重複する)で言いますか? 2. 9月の最初の週は、「1(土)」しかありません。 その場合、2(日)は、第1週?第2週?でしょうか? 3. こう言うの、何かルールがありますか? よろしくお願いいたします。

  • EXCELで作成するカレンダーについて

    EXCEL2002での質問です。 シート1に31日分のカレンダーを作成し、セルA1(年)とセルB1(月)に記載された年月を変更することで 曜日固定の日付変動で毎月のカレンダーが表示するように作成しています。 (A3セルに、=DATE(A1,B1,1)-(WEEKDAY(DATE(A1,B1,1),1)-1)で作成しています) ~以下、シート1の各セルの役割~ ・第1行に A1 B1 年 月 ・A列に A2~G2 日曜~土曜(変動無し固定型) A3~G3 第1週の日付(変動有り) A4~G4 第1週のスケジュール表示領域 A5~G5 第2週の日付(変動有り) A6~G6 第2週のスケジュール表示領域 A7~G7 第3週の日付(変動有り) A8~G8 第3週のスケジュール表示領域 A9~G9 第4週の日付(変動有り) A10~G10 第4週のスケジュール表示領域 A11~G11 第5週の日付(変動有り) A12~G12 第5週のスケジュール表示領域 ~~~~~~~~~~~~~~~ これに付加をつけて、スケジュール機能を作成しようとしているのですが、 シート2以降、200806、200807、200808~というようにシート名を付け、 各シートに31日分の”行”を作成し(A3~A33までに1日~31日と記載)、 そこにスケジュール(B3~B33)を記載していきます。 この時、シート1側の年月(A1とB1)を2008年8月と変更した際に、別シート200808に記載された スケジュール(B3~B33)がシート1側の各日スケジュール領域に反映するようにするには、 どのように設定すればいいんでしょうか・・・? シートが固定してる場合は、シート1の各日のスケジュール表示領域に、 =200808!B3 などと200808のシートに記載されてあるスケジュールに通常参照を設定すればいいんですが、 シート1のA1とB1に記載された年月を2008年9月と変更した際に、 =200809!B3を参照するように作成したいのですが・・・。 基本的に、シート1側は年月を変更するだけの参照シートとしたいんです。 分かりにくい説明で申し訳ございませんが、ご教示頂ける方いらっしゃいましたら、 よろしくお願いいたします。

  • excel 当番表を作る

    excelで当番表を作っています。 カレンダーの中に毎日「お昼当番」と「朝礼当番」を入れています。 「お昼当番」と「朝礼当番」のメンバーは若干違います。 7月  2日 3日 4日 5日 6日  A  B  C  D  E  C  B  A  C  B  9日 10日 11日 12日 13日  F  G  A  B  C  A  C  B  A  C ・・・・ このとき、3日や13日のように同じ人が当番が重なることがありますが これは避けたいと思っています。 いつもこのカレンダーの作成を行う際、 コピペを間違って誰かが途中抜けてしまったり、 同じ人が重なってしまうことを見落とすことがあります。 このようなカレンダーの作成を自動で行う方法はあるでしょうか? 難しいと思いますが、ご助力お願い致します。

  • カレンダーの週について

    子供じみた質問で恐縮なのですが、カレンダーで今月12月の場合、1日が土曜で、すぐ次の週に段が変わりますが、1日土曜日を1週目と数えて良いですか?

専門家に質問してみよう