- ベストアンサー
Excel VBAで同じ数字セルを塗り潰す方法
- Excelの特定の範囲内で、重複する数字を視覚的に識別する方法についての質問です。
- 特に、重複が縦・右斜め・左斜めに存在する場合に、そのセルを黄色で塗り潰すVBAの実装を求めています。
- 他の方法も歓迎されており、Excel 2021を使用している場合のアドバイスが求められています。
- みんなの回答 (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
その他の回答 (2)
- kkkkkm
- ベストアンサー率66% (1719/2589)
- kkkkkm
- ベストアンサー率66% (1719/2589)
条件つき書式の「数式で・・・」を利用して 範囲を=$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個のルールででいけそうですので試してみてください。
お礼
補足
早速、条件付き書式-数式を利用して~ から、 上記3つのルールを入れてみましたが、 A4~Y4の間にあるセルに全く黄色がつかず、 Q2:4に黄色がついたり、B2:11に黄色がつかなかったりします。
お礼