• 締切済み

エクセルで、セルに値が入ったら自動的に行に色をつける方法教えてください!

条件付書式は3つまで可能だったのですが、 4つ以上なのでつかえませんでした。 以下↓のようにしたいのですが、良い方法はないでしょうか? --------------------------------------- O12に△が入ったらその列が、水色 □が入ったらその列が、オレンジ    ○が入ったらその列が、紫    ◎が入ったらその列が、青 というふうにしたいです ------------------------------------ どうかよろしくおねがいします。

みんなの回答

  • Scull
  • ベストアンサー率26% (248/951)
回答No.8

J,K,M,N列の入力に「入力規則」を使って、O列の関数を整理した方が良いように思います。O列の関数が「必要以上に複雑化」していて、条件付き書式の動作に不具合を引き起こしているように見受けられます。 O列のIF関数が競合を起こしているように見えますが。 条件付き書式の設定ではなく、O列の関数が不適正です。

  • chiezo2005
  • ベストアンサー率41% (634/1537)
回答No.7

#1です。 ダウンロードしたファイルは 「数式の値が」「に等しい」「文字化け」 になってました。 「セルの値」「に等しい」「=○」 と入力しなおすとちゃんと色がつきました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

#02、05です。#03さんへの補足見逃してました。 こちらのマクロに変更します。ご迷惑をおかけしました。(N4:N7を着色する仕様は変わりません。また全ての条件付き書式は解除してください) Private Sub Worksheet_Change(ByVal Target As Range) Dim CurADRS As String, idxROW As Long, Kekka CurADRS = Selection.Address Application.ScreenUpdating = False For idxROW = 12 To Range("O65536").End(xlUp).Row Kekka = Application.Match(Cells(idxROW, 15), Range("$N$1:$N$7"), 0) 'N1:N7の範囲で記号を検索 If IsError(Kekka) Then '記号が合致しないとき ActiveSheet.Range(Cells(idxROW, 1), Cells(idxROW, 16)) _ .Interior.ColorIndex = xlNone 'その行のA列~P列は塗りつぶしなし Else '記号が合致したセルの色に着色 ActiveSheet.Range(Cells(idxROW, 1), Cells(idxROW, 16)) _ .Interior.ColorIndex = Cells(Kekka, 14).Interior.ColorIndex End If Next idxROW Application.ScreenUpdating = True End Sub

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.5

#02です。ご要望を理解しました。 以下のマクロはO12以下に入力した記号でN4:N7の範囲を検索し、記号が合致したら(N4:N7の)セルの色で着色します。ですからN4:N7のセルは着色して動かしてみてください。(この仕様のほうが汎用的と思いましたが、色は固定でよいなら補足してくださればなおします) シートに設定した条件付き書式はすべて解除し、O12:031の式も削除してからお試しくださいね。 Private Sub Worksheet_Change(ByVal Target As Range) Dim Kekka If Target.Column = 15 And Target.Row >= 12 Then 'O列はA列から数えて15番目,12行以降が処理対象 Kekka = Application.Match(Target.Value, Range("$N$1:$N$7"), 0) 'N1:N7の範囲で記号を検索 If IsError(Kekka) Then '記号が合致しないとき ActiveSheet.Range(Cells(Target.Row, 1), Cells(Target.Row, 16)) _ .Interior.ColorIndex = xlNone 'その行のA列~P列は塗りつぶしなし Else '記号が合致したセルの色に着色 ActiveSheet.Range(Cells(Target.Row, 1), Cells(Target.Row, 16)) _ .Interior.ColorIndex = Cells(Kekka, 14).Interior.ColorIndex End If End If End Sub

  • chiezo2005
  • ベストアンサー率41% (634/1537)
回答No.4

#1です。 エクセル2003では記号でもできました。 「セルの値が」 「次の値に等しい」 「="△"」 としてますか? とりあえず,4個までなので拡張性を考えると#2さんのようなマクロしかないかな。

kanna5
質問者

補足

返答ありがとうございます。 ためしてみたのですが、こちらもやっぱりうまくいきません。 この実際に試しているエクセルのデータをアップロードしましたので、もしよろしければどうかお願いします。 passは1111です。 www.uploda.net/cgi/uploader4/index.php?dlpas_id=0000004069.zip

  • Scull
  • ベストアンサー率26% (248/951)
回答No.3

IF関数を使って、記号を元に条件になる数値を書き出すセルを作成し、書き出されたセルの数値を元に条件付き書式を設定すればよいのでは? たとえばA列に◎が入ったら1、△が入ったら2、□が入ったら3、×が入ったら4と書き出すIF関数をB列に入力します。 条件付き書式はB列のデータを元に設定すればよろしいでしょう。

kanna5
質問者

補足

すいません、先ほどアップしたエクセルのファイルですが、説明忘れていました。 1~4の列に日付を入れるとステータスに△などの記号が入るようになっています。 ステータスに入った記号を受けて行の表示を自動で変えたいと思っているのです。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

ならばマクロでやってみませんか? あまり汎用的ではないですが以下のマクロを、そのシートのマクロとしてペーストしてみて下さい。O12セルが変わるたびに色が着きます Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$O$12" Then '対象のセルが変わったらこの行を修正 Select Case Target.Value Case "△" ActiveSheet.Range("O:O").Interior.ColorIndex = 8 '着色する列は("x:x")を修正 Case "□" ActiveSheet.Range("O:O").Interior.ColorIndex = 46 Case "○" ActiveSheet.Range("O:O").Interior.ColorIndex = 13 Case "◎" ActiveSheet.Range("O:O").Interior.ColorIndex = 5 Case Else ActiveSheet.Range("O:O").Interior.ColorIndex = xlNone End Select End If End Sub ColorIndexで色を指定しますが、紫、青はかなり濃い色なのでラベンダー(=39)、薄い青(=41)、薄い水色(=34)などの色を使った方が良いかもしれません。 マクロをペーストするには該当のシートを開いた状態で、alt+F11でVBE画面を開いて、F7キーを押すとコード入力画面が開きますから、そこにペーストして下さい

kanna5
質問者

補足

皆様、いろいろありがとうございます。 いろいろとためしてみたのですが、やっぱりうまくいきません。 一応、作っているエクセルのデータをアップロードしました。もしよろしければどうかお願いします。 passは1111です。 www.uploda.net/cgi/uploader4/index.php?dlpas_id=0000004069.zip

  • chiezo2005
  • ベストアンサー率41% (634/1537)
回答No.1

以下のURLに4つの場合の例が載っています。 貴方の場合,数字ではないので,入力時に入力値の制限を組み合わせれば,とりあえずこの場はしのげるのでは? ----以下URLより一部引用------- Excel の条件付き書式では、3 つの条件を使用できます。ただし、セルのデフォルトの書式設定を考慮すれば、最小から最大まで条件を正しく設定することで、実際には 4 つの条件を使用できます。たとえば、次のようにデータに色を追加するとします。

参考URL:
http://office.microsoft.com/ja-jp/assistance/HA011366251041.aspx
kanna5
質問者

補足

すいません、御教授いただいた方法では、 セルの値は数値であることが条件のようです。 セルには記号がはいるのでこの方法では出来ないようです。

関連するQ&A