- ベストアンサー
背景色の有無を判断をして別のセルに「1」と入力
任意の行を見やすくするために背景色を塗りつぶしてあります。 その塗りつぶされている行だけ、集計対象としてフラグを立てたいのですが、1シートのレコード数も大量なのでマクロでやりたいと思っています。 背景色の指定されている行は、「集計対象」という名前の別のセルに「1」とフラグを立てる方法を教えて下さい。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>1色だけの場合は教えていただいた方法で思い通りの結果を得られました そういうマクロではありませんが、まぁどのみち >色は、赤、青、黄色の3色で、D列で判断できます エクセル2010は沢山の色が使えるので、あなたが言ってる赤青黄色が具体的にどの色なのか、ご自分で調べて正しくマクロに反映しないといけません。 とりあえず動くやり方を回答しておくので、あとはご自分で適切に応用してください。だらだら実は実はといつまでも付き合ってと言われても、困りますので。 手順: A1セルにあなたの赤を塗る B1セルにあなたの青を塗る C1セルにあなたの黄色を塗る sub macro2() dim r as long for r = 2 to cells(rows.count, "D").end(xlup).row if cells(r, "D").interior.colorindex <> xlnone then cells(r, "U") = iif(cells(r, "D").interior.color = range("A1").interior.color, 1, "") cells(r, "V") = iif(cells(r, "D").interior.color = range("B1").interior.color, 1, "") cells(r, "W") = iif(cells(r, "D").interior.color = range("C1").interior.color, 1, "") end if next r end sub
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >任意の行を見やすくするために背景色を塗りつぶしてあります >1シートのレコード数も大量なので・・・ というコトですので、Excel2007以降のバージョンだという条件ですが、「色フィルタ」でやってみました。 (A列には必ず色がついているとします) 前提条件として塗りつぶしは同じ色だとします。 尚、何色に塗りつぶされているのか判らないので最初にヒットしたセルの色でフィルタをかけています。 1行目が項目行でデータは2行目以降にあり、 1行目項目の「集計対象」の列に「1」を表示するようにしてみました。 Sub Sample1() Dim i As Long, j As Long, lastRow As Long, c As Range, r As Range, myColor lastRow = Cells(Rows.Count, "A").End(xlUp).Row Set c = Rows(1).Find(what:="集計対象", LookIn:=xlValues, lookat:=xlWhole) j = c.Column For i = 2 To lastRow If Cells(i, "A").Interior.Color <> xlNone Then Exit For End If Next i myColor = Cells(i, "A").Interior.Color Range(Cells(2, j), Cells(lastRow, j)) = "" Range("A1").AutoFilter Field:=1, Criteria1:=myColor, Operator:=xlFilterCellColor Range(Cells(2, j), Cells(lastRow, j)).SpecialCells(xlCellTypeVisible) = 1 ActiveSheet.AutoFilterMode = False End Sub こんな感じではどうでしょうか?m(_ _)m
補足
ありがとうございます。 教えていただい方法を、今ひとつひとつ意味を調べながら勉強しています。 昨日、マクロの勉強を始めたばかりなのでまだわからないことだらけです。 No.1の方の補足にも書きましたが、背景色が1色だけでなく、3色でした。 それぞれルールに基づいて背景色を赤、青、黄色の3色で設定しており、それぞれが集計対象で、フラグを立てるセルを3列用意しました。 赤・・・U列 青・・・V列 黄・・・W列 としました。 まだtom04様に教えていただいたコードを理解できていない段階で恐縮ですが、お時間がございましたら色ごとにフラグを立てる方法も教えて下さい。 宜しくお願いします。
- keithin
- ベストアンサー率66% (5278/7941)
ご利用のエクセルのバージョンも不明のご相談ですが、エクセル2007以降を使い、オートフィルタを使って「所定の色で塗りつぶされている」あるいは「塗りつぶされていない」で絞り込んで、まとめて処置してしまうのが一番お手軽な方法です。 で。とりあえずご相談の直接の回答として。 絞り込みたい条件も不明のご相談なので、ひっくるめて「塗られてないを除く」を対象とする事にします ご利用のシートの配置状況も不明のご相談なので、ふつーに1行目にタイトル行、2行目からデータ、A列で全データの記入範囲を調査できるということにします とりあえずふつーに「A列に塗ってあるか無いか」だけで判定できることにします 「集計対象という名前」を毎回どこかで探さなきゃならないのは別のご相談という事にして、とりあえず固定の列に記入することにします sub macro1() dim r as long for r = 2 to cells(rows.count, "A").end(xlup).row cells(r, "I") = iif(cells(r, "A").interior.colorindex = xlnone, "", 1) next r end sub
補足
エクセルやマクロの知識がないため、曖昧な質問の仕方ですみませんでした。 エクセルは2010を使用しています。 それと、こちらで相談を投稿してから、背景色が3色使用されているファイルも出てきてしまいました。 よく調べてから投稿するべきでした。 すみません。 1色だけの場合は教えていただいた方法で思い通りの結果を得られました。 ありがといございます。 色が3色の場合はどうしたらよいでしょうか? 色は、赤、青、黄色の3色で、D列で判断できます。 フラグを立てるセルは、 赤・・・U列 青・・・V列 黄・・・W列 で設定しました。 引き続きご指導いただけますようお願いします。
お礼
ありがとうございました。 お蔭様で結果を得ることができました。 だらだらと質問してすみませんでした。