• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【再】連続する同じ数字のセルの塗り潰しがしたい。)

Excel VBAで同じ数字セルを塗り潰す方法

このQ&Aのポイント
  • Excelの特定の範囲内で、重複する数字を視覚的に識別する方法についての質問です。
  • 特に、重複が縦・右斜め・左斜めに存在する場合に、そのセルを黄色で塗り潰すVBAの実装を求めています。
  • 他の方法も歓迎されており、Excel 2021を使用している場合のアドバイスが求められています。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

VBAだと(冗長なコードかもしれませんが思いつくままのコードです) 実行時の画像は回答No.2と同じなので省略します。 Sub Test() Dim i As Long Dim c As Range Range("A1:Y4").Interior.ColorIndex = xlNone For Each c In Range("A1:Y4") If c.Row <> 1 And c.Column <> 1 Then If c.Value = c.Offset(-1, -1).Value _ Or c.Value = c.Offset(-1, 0).Value _ Or c.Value = c.Offset(-1, 1).Value _ Or c.Value = c.Offset(1, -1).Value _ Or c.Value = c.Offset(1, 0).Value _ Or c.Value = c.Offset(1, 1).Value _ Then c.Interior.Color = vbYellow End If ElseIf c.Row = 1 Then If c.Column <> 1 Then If c.Value = c.Offset(1, 0).Value _ Or c.Value = c.Offset(1, 1).Value _ Or c.Value = c.Offset(1, -1).Value _ Then c.Interior.Color = vbYellow End If Else If c.Value = c.Offset(1, 0).Value _ Or c.Value = c.Offset(1, 1).Value _ Then c.Interior.Color = vbYellow End If End If ElseIf c.Column = 1 Then If c.Row <> 1 Then If c.Value = c.Offset(1, 0).Value _ Or c.Value = c.Offset(1, 1).Value _ Or c.Value = c.Offset(-1, 0).Value _ Or c.Value = c.Offset(-1, 1).Value _ Then c.Interior.Color = vbYellow End If End If End If Next End Sub

sazanami0422
質問者

お礼

VBA実行して上手くいきました。 ありがとうございます。

Powered by GRATICA

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

> A4~Y4の間にあるセルに全く黄色がつかず、 > Q2:4に黄色がついたり、B2:11に黄色がつかなかったりします。 こちらではついているのですが・・・。画像を添付します。 もしかして数式を入れた後で範囲の指定を変更しませんでしたか? その場合数式も変更されてしまいます。 あとテスト不足でA1が反応しませんでした。 画像は確認のためにA1を11にしています。 範囲を=$A$1 で式を =AND(A1<>0,OR(A1=OFFSET(A1,1,0),A1=OFFSET(A1,1,1))) を追加してください

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

条件つき書式の「数式で・・・」を利用して 範囲を=$B$2:$Y$4で 数式を =AND(B2<>0,OR(B2=OFFSET(B2,-1,-1),B2=OFFSET(B2,-1,0),B2=OFFSET(B2,-1,1),B2=OFFSET(B2,1,-1),B2=OFFSET(B2,1,0),B2=OFFSET(B2,1,1))) 範囲を=$A$1:$Y$1で 数式を =AND(A1<>0,OR(A1=OFFSET(A1,1,-1),A1=OFFSET(A1,1,0),A1=OFFSET(A1,1,1))) 範囲を=$A$1:$A$4で 数式を =AND(A1<>0,OR(A1=OFFSET(A1,-1,0),A1=OFFSET(A1,-1,1),A1=OFFSET(A1,1,0),A1=OFFSET(A1,1,1))) の3個のルールででいけそうですので試してみてください。

sazanami0422
質問者

お礼

間違いの指摘に続き、早速の回答ありがとうございます。教えていただいたやり方を早速試してみます。

Powered by GRATICA
sazanami0422
質問者

補足

早速、条件付き書式-数式を利用して~ から、 上記3つのルールを入れてみましたが、 A4~Y4の間にあるセルに全く黄色がつかず、 Q2:4に黄色がついたり、B2:11に黄色がつかなかったりします。

関連するQ&A