プロが教えるわが家の防犯対策術!

今エクセルで勤務表を作成しています。日付の欄は31日分あり、
年と月を変更することで、項目欄に日付が入力されます。
たとえば31日ある月は31項目埋められ、30日ある月は30日まで項目が埋まり、後の1つは空白となります。
土日はグレーに塗りつぶすようになっていて、条件付書式で
=TEXT(DATE(年,月,30),"aaa")="土"の時は塗りつぶすというような処理をしています。
ここで2月について問題が発生していて、2月は29日しかないので30、31の項目は空白なのですが、条件付書式が
有効になってしまい(DATE(2008,2,30)は2008/3/1になる)、
空白なのに欄に色だけが塗りつぶされてしまっています。
何かいい解決策はないでしょうか。
何かアイデアがある方がいらっしゃいましたらぜひご教授いただきたく、よろしくお願いいたします。

A 回答 (10件)

私のブリーフケースのスケジュールファイル参考にどうぞ



http://briefcase.yahoo.co.jp/bc/gyouda1114/lst?& …
    • good
    • 0
この回答へのお礼

わざわざファイルまで送っていただきありがとうございます。
早速参考にしてみます。
ありがとうございました。

お礼日時:2008/08/19 14:18

#6です



=TEXT(A2,"aaa")が本当に成立しているのならば
=TEXT(A2,"aaa")="土"で良いはずです

元々質問の仕方がおかしいのです
最初から、#3さんの回答のお礼に加え
式を設定しているセルはどこか
1~28日までのセルの式
どのセルに条件付書式を設定するのか
この辺をちゃんと踏まえて質問していないので
的を得た回答が得られないのです

ここから本題です
今までの他の方とのやり取りから、想像すると
1~28日までは、値が"2008/2/1"で表示形式が日のみ
29~31日までは、値が計算式により、数値で"29,30,31"の様ですね

#3さんへの回答のお礼と上の条件を踏まえて

1~28日までの条件式は =OR(TEXT(A2,"aaa")="土",TEXT(A2,"aaa")="日")
29~31日までの条件式は =OR(TEXT(DATE($Q$3,$X$3,$A30),"aaa")="土",TEXT(DATE($Q$3,$X$3,$A30),"aaa")="日")

これで間違いないのでは
    • good
    • 0

ANo.7です


土日別色で塗りつぶすのではなく 
土日をグレーに塗りつぶすのでしたね
No.7を次のように修正してください

条件1は同じ
条件2を
「数式が =OR(WEEKDAY($A3)=1,WEEKDAY($A3)=7)」
  書式 パターンをグレーとする
  土曜又は日曜をグレーで塗つぶす
条件3はいりません
    • good
    • 0
この回答へのお礼

度々回答していただき本当にありがとうございます。
僕もgyouda1114さんの方法でいけると思い、試してみましたが駄目でした。
結果としては、29日以降がすべて空白(白で塗りつぶされる)になってしまいます。。。

お礼日時:2008/08/19 11:47

こんな方法どうですか



A1=2008 B1=2

A3=DATE($A$1,$B$1,1) (2月1日)
A4=$A3+1   (2月2日) この式をA33までオートフィル
A31=$A30+1  (2月29日)
A32==$A31+1 (3月1日)
A33=$A32+1  (3月2日)

条件付き書式 A3~A33に設定
条件1「数式が =MONTH($A3)>MONTH($A$3)」 書式 フォントの色を白
 A3セルの月(2月)が「絶対参照A3セル」の月(2月)より大きいとき

条件2「 数式が =WEEKDAY($A3)=1 」  書式 パターンをベイジュ
 A3セルの曜日が日曜日のときベイジュで塗りつぶし

条件3「 数式が =WEEKDAY($A3)=7 」 書式 パターンを薄い水色
 A3セルの曜日が土曜日のとき薄い水色で塗りつぶし

参考URL:http://www11.plala.or.jp/koma_Excel/contents1/ma …
    • good
    • 0

ここまで出来たのですから、もう、ひとひねりしましょう



年=A1、月=B1、日=A2~A32とします
条件付書式の式を、次のように変更してください

=TEXT(DATE($A$1,$B$1,$A2),"aaa")="土"  ← 1日の式です
=TEXT(DATE($A$1,$B$1,$A3),"aaa")="土"  ← 2日の式です
        .                .
        .                .
        .                .
=TEXT(DATE($A$1,$B$1,$A31),"aaa")="土"  ← 30日の式です
=TEXT(DATE($A$1,$B$1,$A32),"aaa")="土"  ← 31日の式です

アドバイスです
条件付書式に設定する式は、成立するか、しないか、しか見ていないので
今回、30日、31日ですが
セルが空白なので一見エラーがでそうですが
式が成立しなかっただけで、エラーにはなりません

外してたら、ごめんなさい
    • good
    • 0
この回答へのお礼

回答していただき、ありがとうございます。
試してみたのですが、色づけはされませんでした。。。
ちなみにB列には日付が=TEXT(A2,"aaa")の形で入っています。

お礼日時:2008/08/19 09:12

2月(2008年の場合)の30、31日の行は、空白にする式を入れるものです。


A2に=IF(DATE(2008,2,ROW()-1)>EOMONTH("2008/2/1",0),"",DATE(2008,2,ROW()-1))
と入れて下方向に式を複写すると
A31.A32は空白になります。
ーー
当然
条件付書式で、A2:A32を範囲指定して
数式が=WEEKDAY(A2)=7
として3/1に当たる第31行は土曜として色が付きません。
    • good
    • 0

>2月は29日しかないので30、31の項目は空白なのですが


ここまでは数式が出来ていて空白になっているのですよね。
条件付書式の 数式を
=TEXT(DATE(年,月,30),"aaa")="土"ではなくて
たとえば A列に一月分の日付がある場合
このセルの結果を利用して、
=AND($A1<>"",WEEKDAY($A1)=7)
にしてしまっては如何でしょうか。

この回答への補足

返信が遅れてしまって申し訳ありません。
あれから用事が入ってしまって。。。
もう少し検討してみます。

補足日時:2008/08/18 19:04
    • good
    • 0
この回答へのお礼

返信が遅れてしまって申し訳ありませんでした。
また、回答ありがとうございました。
hallo-2007さんのやり方で土曜日はうまくいきましたが日曜日がうまくいきせん。
WEEKDAY($A1)=7なら日曜日はWEEKDAY($A1)=1でいいですよね。。。
なぜうまくいかないのでしょう。。。

お礼日時:2008/08/19 11:21

単純ですが曜日のセル表示を作成して


=IF((MONTH(DATE(年,月,日))=月,TEXT(DATE(年,月,日),"aaa"),"")
のようにすればいいのでは?
条件付書式は
「数式が」「曜日のセル="土"」で塗り潰し
これなら29,30,31日がない月に対応できます。

この回答への補足

返信が遅れてしまって申し訳ありません。
あれから用事が入ってしまって。。。
もう少し検討してみます。

補足日時:2008/08/18 19:02
    • good
    • 0
この回答へのお礼

返信が遅れてしまって申し訳ありません。
今、曜日のセルは日付の隣に=TEXT(A2,"aaa")という形で表示しています。
そして、条件付書式は数式が曜日のセル="土"で塗りつぶしていますが、うまくいっていません。
ちなみに29,30,31日の日付のセルは
=IF(DAY(DATE($Q$3,$X$3,29))=29,"29","")
=IF(DAY(DATE($Q$3,$X$3,30))=30,"30","")
=IF(DAY(DATE($Q$3,$X$3,29))=31,"31","")
曜日のセルは
=IF(DAY(DATE($Q$3,$X$3,29))=29,TEXT(DATE($Q$3,$X$3,29),"aaa"),"")
=IF(DAY(DATE($Q$3,$X$3,30))=30,TEXT(DATE($Q$3,$X$3,29),"aaa"),"")
=IF(DAY(DATE($Q$3,$X$3,31))=31,TEXT(DATE($Q$3,$X$3,29),"aaa"),"")
※Q3は年のセル、X3は月のセルです。
となっています。
条件付書式では、=TEXT(DATE($Q$3,$X$3,29),"aaa")="土"のような形にしています。

お礼日時:2008/08/19 10:52

例えばで言えば・・・



日付の方を工夫すると、言う方向で・・・
=Date(2008,2,1)
を最初のセル、セル書式を「d」日付のみ表示
隣?(下か、右のセル)に
=IF([隣?]="","",IF(MONTH([隣?])=MONTH([隣?]+1),[隣?]+1,""))
を設定、セル書式を「d」日付のみ表示
で、31個のセルを設定

で、条件付書式の
> =TEXT(DATE(年,月,30),"aaa")="土"

=Text([日付の入ったセル],"aaa")="土"
として、相対アドレスを設定しコピーすれば、終了
と、言う話が出来上がりますが・・・

この回答への補足

返信が遅れてしまって申し訳ありません。
あれから用事が入ってしまって。。。
もう少し検討してみます。

補足日時:2008/08/18 19:01
    • good
    • 0

=TEXT(DATE(年,月,30),"aaa")="土"



を=TEXT(DATE(年,月+1,1)-1,"aaa")="土"に変えてみてもだめですか。

翌月1日の1日前です
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
2月分についてはうまくいったのですが、
3月分の表示が、土日が塗りつぶされなくなりました。。。
ちなみに翌月の2日前は
=TEXT(DATE(年,月+1,1)-2,"aaa")="土"と2減らせばよいのですか?
これもなぜかうまくいけません。。。

お礼日時:2008/08/18 17:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!