セルの内容が異なる場合に交互に塗りつぶしたい

言葉ではなかなか説明しにくいのでサンプルを見てもらえれば一目瞭然かと思いますが、

左の表を右の表のように交互に塗りつぶしたい

A列にあるNo.が違えば交互に塗りつぶしていきたい。
テーブルにあるストライプ柄スタイルの様なのですが、これは1行毎ではなく、No.毎に塗り分けたいという事です。

条件付き書式で出来るかな、と思ったのですが、条件付き書式には「上のセルが白ならばこのセルをグレーにする」というように、色を判別する条件が作れません。「上のセルとこのセルの値が違うならば…」なら出来ますが。

マクロで塗りつぶす

仕方がないのでマクロで塗りつぶします。
まぁ条件付き書式で塗るより実際に塗りつぶしたほうがあとあとの管理も簡単だし、特別なセルだけ他の色にしたい、という事にも対応出来るのでこちらのが良いでしょう。

Sub macro1()
    y = 2
    x = 3
    Do Until Cells(y, 1) = ""
        If Cells(y, 1) = Cells(y - 1, 1) Then
            Range(Cells(y, 1), Cells(y, x)).Interior.ColorIndex = Cells(y - 1, 1).Interior.ColorIndex
        Else
            If Cells(y - 1, 1).Interior.ColorIndex <> 48 Then
                Range(Cells(y, 1), Cells(y, x)).Interior.ColorIndex = 48
            End If
        End If
        y = y + 1
    Loop
End Sub

x=横軸、塗りつぶす列数を指定しているので3=C列まで塗りつぶします。
y=縦軸、2行目から塗りつぶします。(1行目は項目名として使用しているので)

ColorIndexで48としているのでグレーに塗りつぶします。他の色が良いのであればこの48を変えてください。

コードの説明

説明するまでもないコードですが、

① 上のセルとA列のNo.が同じであれば、上の行の色と一緒にする。
② 上のセルとA列のNo.が違えば、
②-1 上のセルの色がグレーでなかったら、当該行をグレーに塗る。
②-2 上のセルの色がグレーだったら、何もしない(白のまま)。

こんな感じのフローです。

ColorIndexの色

ちなみにColorIndexの番号と実際の色です。

ColorIndex色パレット

Comment

  1. 匿名 より:

    ありがとうございました。
    助かりました。

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  • ▼お小遣い稼ぎしませんか?▼ 日々の生活にhappyをプラスする|ハピタス

    クレジットカード・FX口座を作るだけで簡単に3万円GETです。一切支出はありません。

MATCH COLUMN グラフ VLOOKUP 目標 日付 変換 COUNTIF 条件付き書式 印刷 NA() XLSTART 置換 ワイルドカード INDEX SUM 検索 DATE 図形 無料 テンプレート SUMIF TODAY コピペ HLOOKUP SUMIFS フロー図 ユーザー定義関数 バーコード 作業効率UP
  • 関西在住の30代サラリーマン。事務職で毎日Excelと戯れています。
    システム導入なんて資金が無い!Excelでなんとかやりたい零細中小の社長さん・事務員さんの力になればと思います。
    詳しいプロフィール


PAGE TOP ↑