• 締切済み

エクセルのセルをある条件で塗りつぶしたいのですが・・・。

エクセルでカレンダーを作成しております。セルに簡単な数式を入れて、例えばB2、C2、D2~に1日、2日、3日と自動的に出るように設定してあるのですが、それが31日がない月になると、31日の部分が1日として出てくるのでその部分が不要なので、空白にするか、塗りつぶしたいのですが、何かいい方法はないですか?条件付書式で、2回目に同じ値が出たら塗りつぶす・・・という方法も考えましたが、方法がわかりません。よろしくお願いいたします。

みんなの回答

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.3

#1です。 >どの状態にしても空白になってしまいます。 済みません。 慌ててたようで、真偽を逆に書いてしまいました。 セルAD2(29日)には =IF(MONTH(AC2+1)=M1+1,"",AC2+1) セルAE2(30日)には =IF(MONTH(AC2+2)=M1+1,"",AC2+2) セルAF2(31日)には =IF(MONTH(AC2+3)=M1+1,"",AC2+3) または セルAD2(29日)には =IF(MONTH(AC2+1)=M1,AC2+1,"") セルAE2(30日)には =IF(MONTH(AC2+2)=M1,AC2+2,"") セルAF2(31日)には =IF(MONTH(AC2+3)=M1,AC2+3,"") としてください。 あと、条件付き書式は関係ないです。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.2

#1です。 M1に月を入れているのでしたら、それを活用しましょう。 >B2に=DATE(K1,M1,1)とあり、それぞれC2,D2~は=B2+1,=C2+1~と入っております。 でしたら 29日 セルAD2 に =AC2+1 30日 セルAE2 に =AD2+1 31日 セルAF2 に =AF2+1 となっているものと思われます。 これをそれぞれ下記に置きかえればOKでしょう。 (不要な部分は空白にします) セルAD2(29日)には =IF(MONTH(AC2+1)=M1+1,AC2+1,"") セルAE2(30日)には =IF(MONTH(AC2+2)=M1+1,AC2+2,"") セルAF2(31日)には =IF(MONTH(AC2+3)=M1+1,AC2+3,"") IF文で、計算結果が翌月になったら空白にしています。 29日からIF文を使うので、30日,31日は 28日+αの形にするのがポイントです。

yukkokun
質問者

補足

その数式はセルに入れるのですよね?どうもうまくいかないようで、どの状態にしても空白になってしまいます。あと、言い忘れていたのですが、そのセルには土日祝は塗りつぶす条件付書式を設定しています。それでも大丈夫なのでしょうか。何度も申し訳ございません。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.1

31日が入るセルの数式を下記のようにしてみてください。 =IF(MONTH(○)=MONTH(□)+1,○,"") ここで、 ○は、31日が入るセルに元々入れている数式 □はその月の「1日」が入っているセル です。 「1日、2日、3日と自動的に出る」というのをどうやっているのか、具体的に数式を示してもらえると、さらに具体的に回答可能です。 (ちょっと応用すれば2月の29日,30日にも対応可能です)

yukkokun
質問者

補足

アドバイスありがとうございます。具体的に入っている数式はB2に=DATE(K1,M1,1)とあり、それぞれC2,D2~は=B2+1,=C2+1~と入っております。それでセルの書式設定の書式形式はユーザー定義=D"日"としております。K1には西暦を、M1には月を入力すると自動的に日付が出ます。7月や8月は問題ないのですが、おっしゃるとおり、2月や9月になると空白になるべきところが1日、2日、3日(2月の場合)という風に出てきます。

関連するQ&A