自分のセンスや笑いの好みに影響を受けた作品を教えて

sheet1!a2:c5、sheet2!a2:c6を比較して、比較(シート)!d2:f8に、一致するする物は
d2:f4、一致しないものはd6:f7と、Do Until loopのネスト、IF文を使って実現したいのですが、
何回やっても、ループが回らず、上手く行きません。大変、お手数ですが、どなたか、ご存じの方、
教えて頂けないでしょうか?
コード↓
Option Explicit

Sub test1() '比較sheet
Dim i As Long, j As Long ’比較シートa2:c5に貼り付け
With Sheets("sheet1").Range("a1").CurrentRegion.Offset(1, 0)
.Resize(.Rows.Count - 1).Copy Sheets("比較").Range("a2")
End With

i = 2

Dim Flag As Long
Flag = 0

j = 2
Do Until i > Sheets("sheet2").Cells(Rows.Count, "a").End(xlUp).Row

Do Until j > Sheets("比較").Cells(Rows.Count, "a").End(xlUp).Row

Flag = 0
If Sheets("比較").Cells(j, "a") = Sheets("sheet2").Cells(i, "a") Then
Sheets("比較").Cells(j, "d") = Sheets("sheet2").Cells(i, "a")
Sheets("比較").Cells(j, "e") = Sheets("sheet2").Cells(i, "b")
Sheets("比較").Cells(j, "f") = Sheets("sheet2").Cells(i, "c")

Flag = 1

i = i + 1
Exit Do


j = j + 1

End If

If Flag = 0 Then

With Sheets("比較").Range("a1").CurrentRegion
.Cells(.Rows.Count + 1, 4) = Sheets("sheet2").Cells(i, "a")
.Cells(.Rows.Count + 1, 5) = Sheets("sheet2").Cells(i, "b")
.Cells(.Rows.Count + 1, 6) = Sheets("sheet2").Cells(i, "c")
j = j + 1
End With

End If
Loop
Loop
End Sub

「ExcelVBAでDo Until lo」の質問画像

質問者からの補足コメント

A 回答 (11件中11~11件)

こんばんは


ここまで書けるなら、
ステップ実行(F8キー)で どこで抜けるか調べて・・
Sheets("sheet2").Cells(Rows.Count, "a").End(xlUp).Row
i j などの値を確認して行けば自己解決できると思うのですが・・・
IF  Else を 使った方が分かり易いかも
    • good
    • 0
この回答へのお礼

ありがとうございます。f8で、実行したんですが、上手くいきません。

お礼日時:2022/12/25 07:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報