• ベストアンサー

ExcelのDate関数で=DATE(2008,2,30)と打つと2008/3/1になってしまう

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

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

  • ベストアンサー
  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.9

私のブリーフケースのスケジュールファイル参考にどうぞ http://briefcase.yahoo.co.jp/bc/gyouda1114/lst?&.dir=/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8&.src=bc&.view=l

lickdog99
質問者

お礼

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

その他の回答 (9)

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

#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")="日") これで間違いないのでは

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.8

ANo.7です 土日別色で塗りつぶすのではなく  土日をグレーに塗りつぶすのでしたね No.7を次のように修正してください 条件1は同じ 条件2を 「数式が =OR(WEEKDAY($A3)=1,WEEKDAY($A3)=7)」   書式 パターンをグレーとする   土曜又は日曜をグレーで塗つぶす 条件3はいりません

lickdog99
質問者

お礼

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

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.7

こんな方法どうですか 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/mame1009/mame100901.html
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.6

ここまで出来たのですから、もう、ひとひねりしましょう 年=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日ですが セルが空白なので一見エラーがでそうですが 式が成立しなかっただけで、エラーにはなりません 外してたら、ごめんなさい

lickdog99
質問者

お礼

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

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

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行は土曜として色が付きません。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

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

lickdog99
質問者

お礼

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

lickdog99
質問者

補足

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

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

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

lickdog99
質問者

お礼

返信が遅れてしまって申し訳ありません。 今、曜日のセルは日付の隣に=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")="土"のような形にしています。

lickdog99
質問者

補足

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

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

例えばで言えば・・・ 日付の方を工夫すると、言う方向で・・・ =Date(2008,2,1) を最初のセル、セル書式を「d」日付のみ表示 隣?(下か、右のセル)に =IF([隣?]="","",IF(MONTH([隣?])=MONTH([隣?]+1),[隣?]+1,"")) を設定、セル書式を「d」日付のみ表示 で、31個のセルを設定 で、条件付書式の > =TEXT(DATE(年,月,30),"aaa")="土" を =Text([日付の入ったセル],"aaa")="土" として、相対アドレスを設定しコピーすれば、終了 と、言う話が出来上がりますが・・・

lickdog99
質問者

補足

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

回答No.1

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

lickdog99
質問者

お礼

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

関連するQ&A