- ベストアンサー
excelかaccessでカレンダー
カレンダーのような物を作りたいのですが、少々条件があります。 よく事務所にあるような31日がズラーっと横に並んでいる予定表 のような物を作りたいのですが、土日は表示したくないのです。 かつ、一ヶ月分作れば、あとは月の数字を変えるだけで12ヶ月分 作れるようにしたいのです。 月が変わると土日がずれてしまうので、困っています。条件によって セルの幅を変えることは無理でしょうし、やはりマクロなどを組まないと ダメでしょうか?(マクロでも不可能?) で、accessで可能ならaccessでもいいと思っています。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ANo.4のステップ2で「次式」が抜けていました。次のとおりです。 A2: =IF(WEEKDAY(DATE(A1,B1,1),2)=6,DATE(A1,B1,3),IF(WEEKDAY(DATE(A1,B1,1),2)=7,DATE(A1,B1,2),DATE(A1,B1,1))) B2: =IF(WEEKDAY(A2+1,2)=6,A2+3,IF(WEEKDAY(A2+1,2)=7,A2+2,A2+1))
その他の回答 (4)
WORKDAY関数を使わない方法です。ただし、祝日も表示します。 1.セル A1、B1 にそれぞれ数値 2007、5 を入力(2007年5月の意味) 2.セル A2、B2 に次式を入力して、これらを“ユーザー定義”で d に書式設定 3.セル B2 を右方にズズーッとW列まで複写 4.“ユーザー定義”で aaa に書式設定したセル A3 に式 =A2 を入力 して、これを右方にズズーッとW列まで複写 5.範囲 U2 を選択して、次の[条件付き書式]に設定 数式が =MONTH(U2)<>$B$1 フォント色 白 6.セル U2 を[コピー] 7.範囲 U2:W3 を選択した後、[編集]→[形式を選択して貼り付け]を 実行して、“書式”だけに目玉を入れて[OK]をクリック
- imogasi
- ベストアンサー率27% (4737/17069)
>31日がズラーっと横に並んでいる予定表 が判りにくい。誤解される。 ーー 2006 12 2006/12/1 2006/12/4 2006/12/5 2006/12/6 2006/12/7・・・ 金 月 火 水 木 のようなのをお望みなら Sub test01() Range("B3:AE4").Clear y = Range("A1").Value m = Range("B1").Value endmon = DateSerial(y, m + 1, 1) - 1 strtmon = DateSerial(y, m, 1) j = 2 For i = strtmon To endmon If Not (Weekday(i) = 1 Or Weekday(i) = 7) Then Cells(3, j) = i Cells(4, j) = Format(i, "aaa") j = j + 1 End If Next i End Sub を毎月実行するようにすれば良い。 第3、4行の書式はユーザー定義のd、右詰めなど工夫してください。 A1,B1の値(年月)の変化で、上記を実行するイベントプロ化はすぐできます。 シェイプ図形にこのマクロを登録してクリックするのも良い。 関数ではセル幅を変えたり、セル(列行)を表示したりしなかったり 左右できません。値だけセットできるだけ。 #2のご回答の、WORKDAYを使うしかない。これとてマイクロソフトが 組んでくれたプログラムみたいなもので、関数の中では異色の関数ですね。 例えば(B列からはじめるとして)D列(土日だけ休みとして、第3営業日)に、その月の場合、どの日が来るかを関数式で計算するのが (このタイプが関数は不得意)難しい。良いアルゴリズムが有りますかね。 ユーザー関数(VBA)を組めばできそうだが、関数であってないようなもの。
お礼
>>31日がズラーっと横に並んでいる予定表 >が判りにくい。誤解される。 どの辺りが誤解されやすかったでしょうか?? なるべくやさしいやり方でということで、今回は別の 方法で作成することになりました。
- mshr1962
- ベストアンサー率39% (7417/18945)
まずエクセルで「ツール」「アドイン」「分析ツール」にチェックがない場合はチェックしてください。 場合によっては、CD-ROMの挿入を求められるかもしれません。 A1=2006,B1=12と年月を入力 C1=WORKDAY(DATE($A$1,$B$1,0),COLUMN()-2) としてセルの書式設定の表示形式をユーザー定義で D としてOKする。 上記を右方向にドラッグでコピーすれば、土日を除いた日付が表示されます。 祝日も除きたい場合は、別途表を作成して日付(年月日)をまとめてください。 C1=WORKDAY(DATE($A$1,$B$1,0),COLUMN()-2,祝日の範囲) で除けます。 ※月によって列数が変わるので変更が必要ですが、面倒ならC1移行のセルに 書式-条件付き書式で「セルの値が」「次の値より大きい」「=DATE($A$1,$B$1+1,0)」 として背景色と同じ色のパターンにすれば表示されません。
お礼
営業日を出す関数なんてあるのですね~ 勉強になりました。 申し訳ありませんが、今回は別の方法で作成しました。 (自分以外のPCで利用する可能性があるため) ありがとうございました。
- megane110
- ベストアンサー率59% (41/69)
すみません、私はOfficeは素人なのですが、検索したらこんなのがありました。 http://www.atmarkit.co.jp/fwin2k/win2ktips/291autoclndr/autoclndr.html 少しいじればご希望のものが作れるのではないでしょうか。
お礼
さっそくありがとうございます。 このページは調べました。こういったカレンダーとは異なるのです。 横一列です。さらに、土日を表示したくないのです。 (完全に消すか、幅を小さくして太い線とみなす)
お礼
お見事です。早速利用させていただきました。 まだまだ工夫が足りなかったようです。 ありがとうございました。