質問: よろしくお願いします。 エクセルのマクロで下記のプログラムを作成したいです。 A列には、1から92までの数字が順に記載されています。 B例には、23から1、46から24、69-47、92-70と上から順に記載されています。 この状態で、C1.D1.E1.F1.G1.H1.I1 に手入力された数字をA列、B例ともに黒く塗り潰します。変数を使用します。 上記で消された数字を除いた3の倍数の色付けを行います。 そのなかで、9の倍数にはさらに別の色付け 18の倍数でも別の色付けを行います。 上記、記載の通り、B列も上から順に倍数毎の処理をしたいのですが、難しいです。 よろしくお願いします。
回答: こういう事でしょうか。 A列B列とも1~92行にダブりなく、正しく1~92の数値が入力されている前提です。 Sub test() Dim rng1 As Range Dim rng2 As Range Dim i As Integer Dim buf As Integer Dim j As Integer Dim ck As Variant Set rng1 = Range("C1:H1") Set rng2 = Range("B1:B92") For i = 1 To 92 buf = Range("A" & i).Value j = Application.Match(buf, rng2, 0) ck = Application.Match(buf, rng1, 0) If IsError(ck) = False Then Range("A" & i).Interior.ColorIndex = 1 Range("B" & j).Interior.ColorIndex = 1 ElseIf buf Mod 18 = 0 Then Range("A" & i).Interior.ColorIndex = 4 Range("B" & j).Interior.ColorIndex = 4 ElseIf buf Mod 9 = 0 Then Range("A" & i).Interior.ColorIndex = 6 Range("B" & j).Interior.ColorIndex = 6 ElseIf buf Mod 3 = 0 Then Range("A" & i).Interior.ColorIndex = 8 Range("B" & j).Interior.ColorIndex = 8 End If Next i End Sub