したがって、1000+の行を持つマスターシートと、同じデータを持つべき別のシートがあります。しかし、現実的には、マスターからいくつかのものが欠落している場合があり、クエリ実行に欠けているものがあります。
簡単にするために、一意のIDが列Bにあるとしましょう。ここに私のコードがありますが、それは非常に遅く、単方向比較しか行いません。2セットのデータを比較して、欠損値を別のシートに貼り付けます。
私の理想的なコードは、少しスムーズに動作し、マスターとクエリの両方から不足しているデータを私に与えるものです。
私が質問している方法に間違っていますか教えてください。
Sub FindMissing()
Dim lastRowE As Integer
Dim lastRowF As Integer
Dim lastRowM As Integer
Dim foundTrue As Boolean
lastRowE = Sheets("Master").Cells(Sheets("Master").Rows.Count, "B").End(xlUp).Row
lastRowF = Sheets("Qry").Cells(Sheets("Qry").Rows.Count, "B").End(xlUp).Row
lastRowM = Sheets("Mismatch").Cells(Sheets("Mismatch").Rows.Count, "B").End(xlUp).Row
For i = 1 To lastRowE
foundTrue = False
For j = 1 To lastRowF
If Sheets("Master").Cells(i, 2).Value = Sheets("Qry").Cells(j, 2).Value Then
foundTrue = True
Exit For
End If
Next j
If Not foundTrue Then
Sheets("Master").Rows(i).Copy Destination:= _
Sheets("Mismatch").Rows(lastRowM + 1)
lastRowM = lastRowM + 1
End If
Next i
End Sub
コードをスピードアップするのに役立つ2つのことがあります。最初にあなたのコードのどこかで 'Application.ScreenUpdating = False'を追加し、最後の' For'ループの最後に 'Application.ScreenUpdating = True'を再適用してください。最後に、 '.Copy'を使用する代わりに' Range( "A1")で値を指定した場所から目的地までの値だけを抽出してみてくださいValue = Range( "B1")。値 ' – Maldred
' Sheets( "E Dump" ).Rows.Count'を使用して、マスターワークシートの最後の行を特定できますか? – Jeeped
おっと、シートネームをシンプルにしようとしていたのですが、 – SantaSecrets