1つのシートから行を取り出し、列内の値に基づいて別のシートにコピー(追加)する必要があるExcelブックがあります。以下のコードを使用してこれを達成できますが、このコードを実行するたびに同じ行をもう一度追加します。Excel 2010で、別のシートへのVBAコピー行ID番号に基づいて先にコピーされた除外
Sheet1が常に追加されます。sheet2は、sheet1のすべての行のインクリメンタルログです(列13に「はい」のフラグが付いています)。両方のシートの同じ列で、列1は一意のIDです。
sheet2にまだ表示されていない行だけがコピーされるように、このコードに追加できる方法はありますか。
ここに掲載されている他の質問への回答から、以下のコードを一緒に書きましたが、シート2の行の重複を避ける方法を見つけることはできませんでした。私はVBAで全く進歩していません。助けを前にありがとう。
Sub GasImportToPending()
Dim x As Long
Dim iCol As Integer
Dim MaxRowList As Long
Dim S As String
Set wsSource = Worksheets("sheet1")
Set wsTarget = Worksheets("sheet2")
iCol = 1
MaxRowList = wsSource.Cells(Rows.Count, iCol).End(xlUp).Row
For x = MaxRowList To 1 Step -1
S = wsSource.Cells(x, 13)
If S = "Yes" Or S = "yes" Then
AfterLastTarget = wsTarget.Cells(Rows.Count, 1).End(xlUp).Row + 1
wsSource.Rows(x).Copy
wsTarget.Rows(AfterLastTarget).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
Next
Application.ScreenUpdating = True
End Sub
各コピー行に固有の識別子がありますか? –
はい、シート1にあるすべての行には、列Aに固有の識別子(5桁の整数)があります。役立ちます。 – MrCB