Sheet1から特定の行をコピーしようとしていますが、その行にある特定のセルのステータスが「DONE」で、「DONE同じ行で別のセルにも特定の値があるかどうかをチェックすることです。その後、特定のシートに見つかった行をコピーし、重複が見つかった場合は宛先をチェックします。Excel VBAのコピーをシートから他のシートにコピーする
これまで2つの基準(私はオートフィルタで試してみましたが、私はそれをやってみましたが)で2つの基準に基づいてSheet1から別のコピーに管理していましたが、他のシートにコピーされます。
私はRangeを使って最初のシートに基づいて値をチェックし、各シートのマクロを書き込んで重複を防止しました。何も働かず、私はこれに固執しています。
以下のコードのもう1つの問題は、[更新]ボタンを複数回押すと、見つかったすべての行は複製されず、最初のものだけが見つかり、その間に空の行が挿入され、それのために。ここで
はコードです:
Private Sub CommandButton1_Click()
Dim LastRow As Long
Dim i As Long, j As Long, k As Long, j1 As Long, k1 As Long, j_last As Long,
k_last As Long
Dim a As Long, b As Long
Dim ActiveCell As String
With Worksheets("PDI details")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
With Worksheets("Demo ATMC")
j = .Cells(.Rows.Count, "A").End(xlUp).Row + 2
End With
With Worksheets("Demo ATMC Courtesy")
k = .Cells(.Rows.Count, "A").End(xlUp).Row + 2
End With
With Worksheets("Demo SHJ")
j1 = .Cells(.Rows.Count, "A").End(xlUp).Row
k1 = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
With Worksheets("Demo AD")
a = .Cells(.Rows.Count, "A").End(xlUp).Row
b = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
MsgBox (j)
For i = 5 To LastRow
With Worksheets("PDI details")
If .Cells(i, 20).Value <> "" Then
If .Cells(i, 20).Value = "DONE" Then
If .Cells(i, 11).Value = "ATMC DEMO" Then
If Not .Cells(i, 7) = Worksheets("Demo ATMC").Range("D4") Then
Worksheets("Demo ATMC").Range("A" & j) = Worksheets("PDI details").Range("A" & i).Value
Worksheets("Demo ATMC").Range("B" & j) = Worksheets("PDI details").Range("E" & i).Value
Worksheets("Demo ATMC").Range("C" & j) = Worksheets("PDI details").Range("F" & i).Value
Worksheets("Demo ATMC").Range("D" & j) = Worksheets("PDI details").Range("G" & i).Value
Worksheets("Demo ATMC").Range("F" & j) = Worksheets("PDI details").Range("H" & i).Value
Worksheets("Demo ATMC").Range("G" & j) = Worksheets("PDI details").Range("I" & i).Value
End If
End If
If .Cells(i, 11).Value = "ATMC COURTESY" Then
If Not .Cells(i, 7) = Worksheets("Demo ATMC Courtesy").Range("D4")
Then
Worksheets("Demo ATMC Courtesy").Range("A" & k) = Worksheets("PDI details").Range("A" & i).Value
Worksheets("Demo ATMC Courtesy").Range("B" & k) = Worksheets("PDI details").Range("E" & i).Value
Worksheets("Demo ATMC Courtesy").Range("C" & k) = Worksheets("PDI details").Range("F" & i).Value
Worksheets("Demo ATMC Courtesy").Range("D" & k) = Worksheets("PDI details").Range("G" & i).Value
Worksheets("Demo ATMC Courtesy").Range("F" & k) = Worksheets("PDI details").Range("H" & i).Value
Worksheets("Demo ATMC Courtesy").Range("G" & k) = Worksheets("PDI details").Range("I" & i).Value
k = k + 1
End If
End If
End If
End If
End With
Next i
End Sub
どのように複製を決定しますか?複製しないようにするのではなく、貼り付けたシートから複製を削除するほうが簡単かもしれません。どちらの方法でも、重複を見つけることは、ある行(ある行内の複数の列を連結している可能性があります)に固有の識別子を1つだけ持つと最も簡単ですが、重複している場合には、 – QHarr
AND – QHarr
を使用して条件を組み合わせることで、これらのIfのいくつかを削除することができます(独自の行に 'Then'があります)。あなたは 'Dim i as Long、j as Long、...')という行に宣言した後、間違ったカンマを持っています。 – BruceWayne