したいこと
別ブックの"YYY(2)"シートと、"YYY"シートを照らし合わせて
G, H, I, J, K, M列の値が全て等しい場合、
"YYY(2)"シートのB列を、"YYY"シートのB列に転記したい。
解決したいこと
下記、コードだと正答率が半分程度になってしまいます。
どこが原因か分からず、お知恵をお貸しください。
下記、コードの表示
VBA
1 '別ブックを開く 2 Workbooks.Open Filename:=ThisWorkbook.Path & "\XXX.xlsm" 3 4 Set Wb1 = ThisWorkbook 'このブック 5 Set Wb2 = Workbooks("XXX") '別ブック 6 7 Set Sht1 = Wb1.Worksheets("YYY") 8 Set Sht4 = Wb2.Worksheets("YYY(2)") 9 10 'フィルタを解除する 11 Dim ws As Worksheet 12 13 row1 = 2 14 For y = 2 To Sht1.Cells(Rows.Count, 6).End(xlUp).Row 15 For z = 2 To Sht4.Cells(Rows.Count, 6).End(xlUp).Row 16 17 If Sht1.Cells(y, 7).Value = Sht4.Cells(z, 7).Value And _ 18 Sht1.Cells(y, 8).Value = Sht4.Cells(z, 8).Value And _ 19 Sht1.Cells(y, 9).Value = Sht4.Cells(z, 9).Value And _ 20 Sht1.Cells(y, 10).Value = Sht4.Cells(z, 10).Value And _ 21 Sht1.Cells(y, 11).Value = Sht4.Cells(z, 11).Value And _ 22 Sht1.Cells(y, 13).Value = Sht4.Cells(z, 13).Value Then 23 Sht1.Cells(row1, "B").Value = Sht4.Cells(z, "B").Value 24 row1 = row1 + 1 25 End If 26 Next 27 Next 28 29 Wb2.Close 30
FOR文の終了条件がF列の最終行になってますがそこは問題ないですか?
ご確認ありがとうございます。
そちらは問題ございません。
上記を実行するとなぜかG, H, I, J ,K, M列すべてが異なる行のB列が転記されてしまい、
困っております。。
正しく転記される行と、されない行があり、さらに困惑してしまいます。。
すべて異なる行が転記されてしまうのは、yとzの二重ループのせいで、まったく関係ない行同士もすべて比較しているのが原因かなと思いましたが、その場合は転記されない行が出てくるのが謎ですね。
異なる行がコピーされる原因にはならないと思いますがコードの中のフィルターの解除の部分は機能してますか?
手間にはなってしまいがコード編集のところでF8を押して1行ずつ実行していくと原因がわかりそうな気がします。