• 締切済み

エクセル2003での条件付書式

 ある計算から、添付画像のような表計算が出来上がり、各グループ(1Gは3×4セル)に共通する数字を同色で塗りつぶしたいのですが、エクセル2003では、条件つき書式が3条件しか設定できません。4条件以上を設定することはできますか?  できれば自動で(数字を指定することなく)共通数字を塗りつぶしたいのですが方法はありますか? よろしくお願いします。

  • kan66
  • お礼率60% (3/5)

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です! ご希望通りの動きにならないみたいですね! 前提条件として (1)前回のコード内で「Sheet2」のB列色を重複セルに表示するようにしていますので、 でSheet2のB列を適当に塗りつぶしておきます。 かなり多めの行数まで塗りつぶしておいても構いません。 (2)Sheet1の指定範囲は条件付書式の設定はないですよね? それさえ問題なければA1~L4セルデータを変更するたびに、重複セルにSheet2のA列に重複データが表示され、 その行のB列セルの色に塗りつぶされるはずなんですが・・・ ただ、一つ気になるのは、質問の最初にある >ある計算から、添付画像のような表計算が出来上がり・・・ の部分です。 数式が入っていて別セルを参照しているのですかね? もしそうであれば、前回のコードは範囲内(A1~L4)セルデータ変更時にマクロが実行される Worksheet_Change イベントですので、色は変化しないと思います。 (見た目は変化したようでも関数そのものが変わっていないので、データとして変化していない) そこで今回は「再計算」されたときにマクロが実行されるコードを載せておきます。 内容はほとんど同じです。 (手抜きでごめんなさい。) Sheet1のVBE画面を開き、前回のコードはそのままにしておいて 「End Sub」の次の行に↓のコードをコピー&ペーストしてみてください。 Private Sub Worksheet_Calculate() 'この行から Dim c, Rng As Range Dim k As Long Dim ws As Worksheet Set Rng = Range("A1:L4") Set ws = Worksheets("Sheet2") Application.ScreenUpdating = False Rng.Interior.ColorIndex = xlNone ws.Columns(1).Clear For Each c In Rng If WorksheetFunction.CountIf(ws.Columns(1), c) = 0 _ And WorksheetFunction.CountIf(Rng, c) > 1 Then k = k + 1 ws.Cells(k, 1) = c End If Next c For Each c In Rng For k = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row If c <> "" And c = ws.Cells(k, 1) Then c.Interior.Color = ws.Cells(k, 2).Interior.Color End If Next k Next c Application.ScreenUpdating = True End Sub 'この行まで ※ Sheet1に二つのマクロが存在することになりますが、指定範囲内が手入力で変化しても 関数で変化しても色が表示されると思います。 今度は上手くいけば良いのですが・・・m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! Excel2003以前のバージョンですと、条件付書式は3条件までしか設定できませんね! そこでVBAになってしまいますが・・・一例です。 Sheet1のA1~L4セルだけに色がつくようにしています。 ↓の画像のようにSheet2を作業用のSheetとして使います。 Sheet2のB列を適当に塗りつぶしておきます。 何色でも構いません。 画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてA1~L4セルに適当にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim c, Rng As Range Dim k As Long Dim ws As Worksheet Set Rng = Range("A1:L4") Set ws = Worksheets("Sheet2") If Intersect(Target, Rng) Is Nothing Or Selection.Count <> 1 Then Exit Sub Application.ScreenUpdating = False Rng.Interior.ColorIndex = xlNone ws.Columns(1).Clear For Each c In Rng If WorksheetFunction.CountIf(ws.Columns(1), c) = 0 _ And WorksheetFunction.CountIf(Rng, c) > 1 Then k = k + 1 ws.Cells(k, 1) = c End If Next c For Each c In Rng For k = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row If c <> "" And c = ws.Cells(k, 1) Then c.Interior.Color = ws.Cells(k, 2).Interior.Color End If Next k Next c Application.ScreenUpdating = True End Sub 'この行まで ※ 尚、条件付書式の設定があるとマクロでは塗りつぶしが出来ませんので、 範囲内の条件付書式の設定はすべて削除しておいてください。 参考になりますかね?m(_ _)m

kan66
質問者

お礼

 tom04さん  回答ありがとうございます。 私は、ほとんどVBA、マクロを使ったことがないため動かし方がおかしいのか tom04さんが書いてくれたとおりに(新しいシートで)再現してみようと思ったのですが うまくいきません。 コードの表示からVBAワークシートにコミペだけで良いんですよね?

関連するQ&A

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

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

  • エクセル ~条件付書式について~

    エクセルは、仕事上、よく使うのですが、作成した表において、セルの数値によって、色分けしたいのですが、条件付書式だと3つしか指定できないですよね。もうちょっとあったらと思うのですが、ほかに何か方法がありますか。 実際にやっていることは、数値の幅ごとに、セル内を特定の色で塗りつぶしています。現在だと、白(何も指定しない)と3つ(3色)の合わせて4色しか指定できないのです。あと1~2色あったらと思うのですが。

  • エクセルの「条件付き書式」で困っています

    エクセルの「条件付き書式」なんですが 表の見栄えを良くするために、一行ごとに色を付けようと 「書式」-->「条件付き書式」-->設定ダイヤログに 条件(1)・・「数式が」-----「=MOD(ROW(),2)=0」を設定しました     書式-->パターン・グリーンを指定 思い通り選択範囲の表に、一行ごとの縞模様が出来たのですが 追加で 条件(2)・・「セルの値が」-----「次の値より大きい」-----「100」     書式-->フォント太字・赤を指定 と指定したところセルに色の付いた行(偶数行)は100以上の数値が入力されても フォントが太字・赤になりません このような条件は「条件付き書式」ではなく、表示形式で設定するのでしょうか? 私は「条件付き書式」で一括に設定したいのですが 詳しい方がいらしたら教えて下さい WIN2000・エクセル2000  です。

  • Excelの条件付書式を教えて欲しい

    I4~N4のセルに●が1つでもあったら、G4のセルの色をピンクにする… というのは、エクセルでどのように式を入れればよいのでしょうか? 条件付書式を使うのかな、と思ったのですがやり方がわからず困っています。 エクセル2003を利用しています。教えてください。

  • Excelの条件付書式の表示

    Excel2000です。 Excelの条件付書式では、条件によってセルを色で塗りつぶしたり、(私はあまり使わないですが、フォントや罫線なども)設定できます。 しかし、セルが色で塗りつぶされていた場合に、 ・条件付書式で色が着いているのか、 ・(条件なく)「セルの書式設定」-「パターン」で色が設定されているのか これらのどちらなのかわからない ということになりますよね。 もちろん、色で塗りつぶされたセルを選択して 書式-条件付き書式 を選べば、もし条件付書式が設定されていれば、その条件が表示されるはずです。 しかし、いちいちそうしなくても、どのセルに【どんな】条件付書式が設定されているかすぐ知る方法をお教えください。 最低でも、条件付書式が設定されているセルをパッとすぐ知る方法をお教えください。

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

    エクセル2007の条件付き書式で教えてください。 エクセル表で時間計算をしたいのですが、手入力した時間の合計があるセルの時間と違っていた場合に条件付き書式でセルに色をつけたいのですが方法がわかりません。 A1 開始時間 B1 終了時間 C1時間計算(B1+1-A1) D1事務a E1事務b F1事務c のようなエクセル表をつくり、C1以外の部分は手入力してます。 D1+E1+F1の入力がC1の自動計算部分と違っていた場合に色をつけてわかるようにしたいです。 条件付き書式のC1のセルの値がD1+E1+F1と違ったらというのを使ったのですが、計算式が入っているせいか思ったように機能してくれません。 どのようにすればできますでしょうか?また条件付き書式で数式を使う場合はどのようにすればよいでしょうか?アドバイスお願いいたします。

  • 条件付書式 しましまともう1つ書式を設定

    エクセルの表をしましま(1行ごとにグレー)にしたいのですが、 条件付書式で、"=AND(MOD(ROW(),2)=1)" を設定すればしましまにできるところまでは分かりました。 ですが、すでに、*の書いてあるセルを網掛けにする条件付書式が入っているセルがあります。 (条件付書式で、セルの値が 次の値に等しい ="*") *の入っているセルは、網掛けで、かつ、しましまにしたいのですが、 そのような設定は可能なのでしょうか?

  • エクセル(条件付書式設定)

    エクセルで車両管理表を作りました。その1つのセルに車検満了日の欄を設定してあります。条件付書式設定を使って車検期限が切れたセルの色を変えたいのですが、具体的にどのように入力すればいいでしょうか?

  • エクセル 条件付書式について

    だれか無知な私に教えてください。 エクセルの条件付書式があると思うのですが、指定の日付になったらセルに色をつけたりすることが可能なはずですが、その中で有効期限が過ぎた場合にセルに色づけする書式(方法)を誰か教えてください。 1. 本日(1/12)より前の日付(~1/11)でセルに色を付ける方法。 2. 上記条件にセルではなく列または行に色づけする方法 これがわかれば大変助かります。宜しくお願い致します。

  • Excelが重くなったのは条件付書式が原因でしょうか

    Excelが重くなったのは条件付書式が原因でしょうか 数独の解法を考える際 Excelを使うことを思いつき添付画像のようなシートを作りました マクロはわからないので 入力済みのセルは一目でわかるように条件付き書式を設定 しました(N3:AR31) 1枚のシートだけだとあまり感じなかったのですが シートをふやすとだんだんExcelの反応が 重くなってきました 他のファイルでは通常の反応なので条件付き書式が原因なのかなと思っています わたしの推測は正しいのでしょうか もしそうなら何か回避するような方法はないものでしょうか アドバイスよろしくお願いします

専門家に質問してみよう