エクセルマクロで複数の条件付き書式を処理する方法

このQ&Aのポイント
  • エクセルの条件付き書式では3つ以上の書式を設定できないため、マクロを使って複数の条件付き書式を処理する方法を教えてください。
  • 条件は曜日が土日祝かつ%が100%の場合、曜日が土日祝かつ%が100%でない場合、曜日が土日祝でなく%が100%の場合、曜日が土日祝でも%が100%でもない場合、日付が過去の場合の5パターンがあります。
  • また、%の行にのみ条件を設定したいため、選択範囲の指定もマクロに組み込みたいと思っています。具体的なVBAの書き方を教えてください。
回答を見る
  • ベストアンサー

複数の条件付き書式をマクロで処理するには?

エクセルの条件付き書式で、3つ以上の書式を設定しなければなりません。 エクセルの機能では3つしか設定できないため、マクロで条件を設定しようと思いますが、方法が分からないので教えてください。 データは、 ・あるセルに =today() で今日の日付データを持ってます。 ・横軸は日付と曜日のデータが入ってます。 ・縦軸はお店の名前が入っていますが、1行目が1~100%までの%の数値、2行目が1~1000までの整数が入っており、2行で1店というかたちで、その下の行にはまた違う店の名前が入ってます。 こんな感じです。↓    12/1 12/2 12/3 12/4 12/5     水   木   金   土   日 A店 100%  90%  80%  70%  60%     500  400  500  400  500 B店  30%  40%  50%  60%  100%     300  200  300  200  300 条件は以下の3つです。 (1)曜日が土日祝だったら背景色をグレーに(%と整数のセル両方) (2)%の値が100%だったら文字色を青に(%の行のみ) (3)上の日付が今日の日付より過去の日付だったら、セル・文字色とも赤色に(%、整数のセル両方) 上記の条件を設定する場合、条件は3つですが、曜日が(1)に該当しつつ%も(2)に該当する場合、曜日は(1)に該当するけど%は(2)に該当しない場合など複数のケースが想定されるため、実際に設定しなければいけない書式は以下の5パターンになるため、エクセルの条件付き書式ではできませんでした。 A. 背景=グレー、文字色=青 B. 背景=グレー、文字色=指定なし(黒) C. 背景=指定なし、文字色=青 D. 背景=指定なし、文字色=指定なし(黒) E. 背景=赤、文字色=赤 この場合、マクロで処理するしかないと思うのですが、どのようにVBAを書いたら良いでしょうか? ちなみに(2)の条件は%の行には設定したいのですが、整数の行には設定したくないです。 いちいち%の行を選んでマクロ実行するのは面倒なので、選択範囲の指定もマクロに組み込みたいです。 お知恵をお貸しください。 よろしくお願いします!!

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

  • ベストアンサー
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

(2)に関しては、セルの書式の、表示形式で実現することが出来ます。 詳しくは、「excel 表示形式」でネット検索すれば、いろいろヒットします。 なので、(1)と(3)を条件付き書式、(2)を表示形式で設定することで、やりたいことが出来ると思います。

puma4646
質問者

お礼

やりたいことができました! 表示形式で色の条件分岐ができるのを知らず、マクロのことばかり考えていました。 スピード解決できて感謝しております。 ありがとうございました!!

関連するQ&A

  • エクセル2010  条件付き書式設定

    エクセル2010の条件付き書式設定で困っています。 日付    商品  2012/10/4    りんご    2012/10/5   みかん 上記のような表で ・「日付」が「2012/10/5」であれば、その行を塗りつぶす という操作を行いたいのですがやり方が分かりません。 (失敗例1)   ・表全体(A2からB3)を範囲指定  ・「条件付き書式設定」 「新しいルール」 「数式を使用して、書式設定するセルを決定」   =$A2="2012/10/5"   まったく変化なし。   試しに日付でなく "みかん"を塗りつぶすよう設定したら   行全体が塗りつぶしできました。   日付の指定の仕方が悪いのかと思い、" " で括らず指定しても変化なしでした。 (失敗例2)   ・表全体(A2からB3)を範囲指定  ・「条件付き書式」   「セルの強調表示ルール」   「日付」   「今日」   今日の日付のセルだけ塗りつぶし。行全体を塗りつぶしたいし、   今日、明日、今月・・・等ざっくりしたくくりでなく日付を指定したい。 大変困っています。助けてください!

  • エクセルの条件付き書式設定マクロについて

    エクセルの条件付き書式設定マクロについて A列からH列まで文字や数字が投入されています。 データが5,000行くらいあって、50行に1回くらい不定期で空白の行が出てきます。 データが入っている全ての範囲において、「C列が空白以外の場合に、 同じ行のA列からH列のセルの上と下を破線?(.Weight = xlHairline)左も右も縦線は実線? (.Weight = xlThin)にする」という条件付き書式を設定したいのですが、マクロが 上手く組めません。 ひとつのセルの条件付き書式の設定はマクロを組めるのですが、 A1:H5000というような広範囲で条件付き書式の設定を組むのが上手くいきません。 教えていただけないでしょうか。

  • 条件付き書式 日付をいれたらグレーアウト

    Excelの条件付き書式で日付を入れたらグレーアウトさせたいです。 同じセルに文字列が入る場合もあるため、何か入っていれば、とすることが出来ないです。また、セルの強調表示ルールや、指定の値を含むセルだけの書式設定なども、日付の特定ができないため使用できないです。※セルに入る日付はTODAY含め過去になります。 何かよいお知恵はないでしょうか。

  • エクセル条件付き書式をマクロにしたいです

    Excel2007使用しています。 類似質問が見つかりましたが、VBA勉強中でそこからの応用ができないので 教えていただけると助かります。 条件付き書式を毎回作成するのが大変なので、マクロで自動設定したいと考えています。 条件付き書式で設定していたのは「C4に指定文字があったら、B4・C5・D4・E4のセルを指定した色に塗りつぶす」を5パターン使用していました。 色を変えるかどうか判断する文字が含まれているのはC列にあります。 C4に「ああ」の文字があればB4・C5・D4・E4のセルを赤色に塗りつぶす C4に「いい」の文字があればB4・C5・D4・E4セルをアクア色に塗りつぶす C4に「うう」の文字があればB4・C5・D4・E4セルを黄色に塗りつぶす C4に「ええ」の文字があればB4・C5・D4・E4セルをオリーブ色に塗りつぶす C4に「おお」の文字があればB4・C5・D4・E4セルを紫色に塗りつぶす これを、C4から文字がある行まで(200行~15,000行まで対象行数が変動)処理して欲しい イメージで伝えて申し訳ありません、 情報足りなければご指摘いただければと思います。 どうぞ宜しくお願い申し上げます。

  • Excel:書式を残しながら条件付き書式を消す方法

    こんにちは。 Excel2007を使って作業をしています。 エクセル2007を使って莫大なデータに書式を設定する必要があるため、 条件付き書式設定を頻繁に使っています。 Excel2003を使っている人にファイルを渡す必要がある場合に、 複雑な条件付き書式設定をつけたままファイルを送れないため、 困っています。また、条件付き書式はデータ容量も重くなるので 最終データは条件を全部消したいなぁって常々思っています。 (条件を解除すると全部の書式が消えてしまいますよね・・・) 同様の質問が2006年にあったことは調べてはいるんですが、 そちらのご回答ではうまく作動できないため、改めて「書式を残したまま条件付き書式をクリアする」 マクロをどなたかご教示いただけないでしょうか?? (本来は私が毎回書式をマクロで設定できればよいのですが。。。すみません) 「数式を指定して書式設定をするセルを決定」を使い、 「枠線」「セルの色」「文字の色」を指定しています。 お手数をおかけしますが、どなたかマクロに詳しい方お願いいたします!

  • excel2010で個数を数えたい

    Windows7でexcel2010を使用しています。 曜日を入力した行とその下の行に曜日に応じてセルの背景色が変わるように条件付き書式設定をしています。曜日の行とその下の行は同じ色になる設定です。 曜日の下の行には文字を入力します。 条件付き書式設定で変更されたセルの背景色で特定の色かつ特定の文字列が入力されたセルの個数を数えたいのですが何か方法はありますでしょうか? たとえば、A1~AE1に曜日を入力していて、平日は背景色なし、土曜日は背景色青、日曜日は背景色赤になるように条件付き書式設定をします。 A2~AE2には色々な文字を入力しますが、上のセルと同じ色になるようにしています。 A2~AE2に〇と入力されていて、且つ背景色なしのセルの個数を数えたい場合はどうすれば良いでしょうか?〇と入力されていて背景が青の場合、赤の場合のセルの個数も数えたいです。 本当は背景色ではなく文字色を条件付き書式設定で変更してその個数を数えたいのですが、色々検索したところ文字色では難しそうなので背景色を変更することにしました。 説明が下手で申し訳ありませんが、どなたかご教授しただけますと幸いです。

  • Excel 条件付書式で、セルに色を付けたいのですが

    エクセルで、チェック表を作成しました。 1行目には日付を2行目には曜日が入るようになっています。 A列には、各チェック項目が入ります。 この様な表を作成し、1ヶ月単位でチェックを行います。 作成した表を、1ヶ月ごとに曜日と日付を更新する必要があります。 土日のみ自動的にセルに色がつくようにしたいのですが、上手くいきません。 現在、条件付書式にて、曜日の欄には色がつきます。 また、他のセルは、「次の場合に等しくない」で曜日の欄が土日の場合に、色がつくようにはなりました。 しかし、日付の欄や、セルに予め文字が入っている場合、この条件付書式が上手く機能しません。 何か良い手はありますか?(文字を消すと上手く機能します)

  • Excel 条件付き書式◆ 同じ行の特定のセルを指定するには

    A列には、ずらーっと、日付の数値が入っています。 B列には、「その日の行動スケジュール」の文字列が入っています。 ”今日”になったら、その日付に該当するB列の「行動スケジュール」だけ文字の色を変えたいと思いました。 このとき、列全体を範囲指定して、「条件付き書式」を設定しようと思ったのですが、数式の書き方がわかりません。 まず、B列のBのところをクリックして列全体を指定した上で、「条件付き書式」の設定のダイアログを出し、「数式が」を選択すればいいだろうというところまではわかります。 しかし、数式において、どのように記述すると、”B列の特定のセルと同じ行にあるA列のセル”だけを選択できるようになるのかがかわかりません。 おそらく、下の●のところに、同じ行にあるA列のセルだけを指定するための記号が入ると思うのですが、手本がどこにも見つかりません。 =●●=today()

  • 条件付き書式

    いつも お世話になっています。 条件付き書式について教えて頂きたいのですが、 E3のセルが100.00以上の場合A1の背景を塗りつぶしたいのですが EXCEL2007で作業中なのですが A1を選択→ホーム→条件付き書式設定→セルの強調表示ルール →指定の値より大きい→E3を選択するとA1のセルの背景が 塗りつぶしになるのですが、 E3<100.00と入力すると塗りつぶしが消えてしまいます。 条件を入力するところが間違えていると思うのですが、 条件を100.00以上と指定するところはどこなのでしょうか? 宜しくお願いします。

  • エクセルの条件付き書式

    条件付き書式について、指定したセルに入力(数字や文字を問わず)すると、セルの色が変わるよう設定したいのです。 ただ、数字の表示を3桁表示する必要があり、どうしても1~99までの番号には頭に「0」をつける必要があるため、条件付き書式を設定する前に、あらかじめ対象のセルには、セルの書式設定で表示形式を文字列に設定しています。 その設定をすることにより、条件付き書式が実行されません。 ですので、 (1)セルに001~099と表示されるよう入力するとセルの色が変わるやり方 と、 (2)数字ではなく文字を入力したときもセルの色が変わる設定方法 を、ご存知であれば教えてください。 エクセルの知識は「初心者~普通」程度です。 表計算などは出来ますが、関数やマクロはかじってる程度です。 簡単な回答をしていただけるとありがたいです。 よろしくお願いします。

専門家に質問してみよう