エクセルについて
同じシート内にあるB列2行目から66行目までとI列2行目から333行目までの
セルを比較し、
B列2行目とI列2行目がおわったらB列2行目とI列3行目を比較という流れになる。
I列の比較が333行目まで終わったら、B列3行目とI列2行目を比較し、終わったらB列3行目とI列3行目を比較していきます。
同じ数値のセルがあったら
(1)A列~E列(行は値が一致した行)をコピー
(2)H列~L列(行は値が一致した行)をコピーし、
(1)はM列に貼り付け
(2)はR列に貼り付け
VBAのコードは以下の様になります
Sub t()
x = 2
y = 2
g = 1
n = 1
Do
Do
If Cells(x, 2) = Cells(y, 9) Then
Range(Cells(x, 1), Cells(x, 5)).Copy Destination:=Cells(g, 13)
Range(Cells(y, 8), Cells(y, 12)).Copy Destination:=Cells(n, 18)
y = y + 1
g = g + 1
n = n + 1
Else
y = y + 1
End If
Loop While y < 334
Loop While x < 67
End Sub
これを実行すると実行エラー1004 アプリケーション定義又はオブジェクト定義の
エラーになります。誰か回答をお願いします。
単純ミスで,Xを増やしていないので脱出出来ていません。
間違いやすいDo Loopではなく,数が決まっているのですからFor To Nextを使ってください。
作成例:
sub macro1()
dim b,i,r
r = 1
for b = 2 to 66
for i = 2 to 333
if cells(b, "B") = cells(i, "I") then
r = r + 1
cells(b, "A").resize(1, 5).copy destination:=cells(r, 13)
cells(i, "I").resize(1, 5).copy destination:=cells(r, 18)
end if
next i
next b
end sub