- ベストアンサー
2個の数字をひと塊として同じ塊を探してセルの塗潰し
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No3の微妙な変更です こちらの方が微妙に早いと思います。 Sub Test() Dim c As Range, d As Range Application.ScreenUpdating = False For Each c In Range("A1:E20") If c.Row Mod 2 = 1 Then For Each d In Range("A1:E20") If d.Row Mod 2 = 1 And c.Value = d.Value And c.Address <> d.Address _ And c.Offset(1, 0).Value = d.Offset(1, 0).Value Then c.Resize(2, 1).Interior.Color = vbYellow End If Next End If Next Application.ScreenUpdating = True End Sub
その他の回答 (6)
関数だけの方法を書いておきます。シートは汚れますが。 すぐ右に、上の数を100倍して下の数を加えた表を作ります。 G1は、=A1*100+A2 あと1行飛びに下にコピー。 右にコピー。 そのさらに右に、先ほど作った表の重複する数の表を作ります。 M1は、=COUNTIF($G$1:$K$19,G1) M2は、=COUNTIF($G$1:$K$19,G1) あと下と右にコピー。 最初の表に戻って、ホームタブの条件付き書式で新しいルールで「数式を使用して、書式設定するセルを決定」で、 A1の条件付き書式は、=M1>1 あと下と右にコピー
- imogasi
- ベストアンサー率27% (4737/17069)
補足してほしい。 (A)2行分のセルの値を考える (B)隣接したセルの値を考える ようだが ーー (1)隣接したセル(縦方向らしい)縦2セルで6-2を考えるとき、順序が逆の、2(上のセル)6 (下のセル)は対と考えるのか? (2)第三のペアーは存在するとするのか? (3) 2セルのマスを考えたとき、6-2(隣接2セル)とx-6,2-Y(隣接マス、4セルの中)(X,Yは何でも)は該当すると考えるのか? (上下2セルの組み合わせは固定か?便宜的なものか?) ーー 関数では複雑になり、VBAでやらざるを得ないような気がする。
補足
回答頂きありがとうございます。 1)6-2の逆となる2-6はペアになりません。 2)第3のペアというのがいまいちわかりませんが、添付図に示したとおり、5列×20行の中に 6-2という組み合わせ(重複)がある分、セルを塗り潰します。 3)6-2(隣接2セル)とx-6,2-Yは、別の組み合わせと考えます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
No1の訂正です。 質問の添付図と同じ結果となります。 Sub Test() Dim c As Range, d As Range Application.ScreenUpdating = False For Each c In Range("A1:E20") For Each d In Range("A1:E20") If c.Row Mod 2 = 1 And c.Value = d.Value And c.Address <> d.Address _ And c.Offset(1, 0).Value = d.Offset(1, 0).Value Then c.Resize(2, 1).Interior.Color = vbYellow End If Next Next Application.ScreenUpdating = True End Sub
- kkkkkm
- ベストアンサー率66% (1719/2589)
No1は勘違い 1列2行ずつのブロックと気がつきませんでした。
- kkkkkm
- ベストアンサー率66% (1719/2589)
VBAで以下でいかがですか。 なお追加で A2A3とA8A9 1と6 A12A13とB4B5 3と9 E6E7に 6と2 が重複しています。 Sub Test() Dim c As Range, d As Range Application.ScreenUpdating = False For Each c In Range("A1:E20") For Each d In Range("A1:E20") If c.Value = d.Value And c.Address <> d.Address _ And c.Offset(1, 0).Value = d.Offset(1, 0).Value Then c.Resize(2, 1).Interior.Color = vbYellow End If Next Next Application.ScreenUpdating = True End Sub
お礼
早速のご回答頂きありがとうございます。 A2A3とA8A9 1と6 A12A13とB4B5 3と9 E6E7に 6と2 が新たに黄色になるのも質問文とは違いますが参考になります。
お礼
何度も回答いただきありがとうございました。