excelのRng1とRng2の2つの範囲を比較するマクロを作成しようとしています。 Rng1( "f2:f15")は、使用されているターゲット番号を含んでいます。 Rng2( "a2:a91")は、すべての可能なターゲットの番号を含んでいます。 Rng2の右側の3つの列( "b2:b91")、( "c2:c91")、および( "d2:d91")には、各ターゲット番号に関連付けられたx、y、z座標値が含まれています。このマクロがしたいのは、Rng1( "g2:g15")、( "h2:h15")、および( "i2:i15")の右側の3列に、 Rng1で見つかったターゲット番号。私が書いた次のコードは、 "実行時エラー '13'、型不一致"を再チューニングしています。VBAマクロで範囲を比較して値を入力する
Sub macro()
Dim Rng1 As Range, Rng2 As Range, Cell1 As Range, Cell2 As Range
Set Rng1 = Range("f2:f15")
Set Rng2 = Range("a2:a91")
For i = 1 To Rng1
For j = 1 To Rng2
For Each Cell1 In Rng1(i)
For Each Cell2 In Rng1(j)
If Cell1.Value = Cell2.Value Then
'cell1.Offset(0, 1) = cell2.Offset(0, 1)
'cell1.Offset(0, 1) = cell2.Offset(0, 1)
'cell1.Offset(0, 1) = cell2.Offset(0, 1)
Cells(2 + i, 7) = Cells(2 + j, 2)
Cells(2 + i, 8) = Cells(2 + j, 3)
Cells(2 + i, 9) = Cells(2 + j, 4)
End If
Next Cell2
Next Cell1
Next j
Next i
End Sub
ありがとう!
は言葉で、書き出したいものだと思います。そして、あなたは 'Rng1(1)'に何個の細胞があると思いますか? –
Rng2の値を追跡するためにjをカウンタとして使用しようとしているので、Rng1の値を追跡するためにカウンタとしてI = 1〜Rng1を使用しようとしています。私は非常に経験豊富なコーダーではなく、これを間違ってやっているかもしれません。ありがとう! – Chris
しかし、Rng1はマルチセル範囲オブジェクトです。ループは1から??意味がありません。そのため、タイプの不一致エラーが発生します。 'For ... Next'ループのVBAヘルプを見てください。そして、後で、あなたは 'Rng1(i)の各セルに対して'を持っています。 I = 1の場合、Rng1(I)はその範囲内の最初のセルになります。ここでも、Rng1(I)の各セルは1つのセルに過ぎません。おそらく、 'I'ループと' j'ループを完全に排除し、範囲内の各セルを循環させることができます。 –