我目前能夠檢查Sheet-1的列A值是否存在於Sheet-2的列A中並添加缺少的12次。但是,不過,我想檢查Sheet-1上的列A & B組合是否存在於Sheet-2的列A & B中,並添加缺失的12次。以下是我需要的一點說明。如果範圍存在於目標中,VBA進行比較其他添加缺失範圍12次
正如您所見,Sheet-2 Column-A & B沒有1A & 2A的組合,因此我們需要將此12次添加到Sheet-2。
Sheet-1 Sheet-2
Column-A Column-B Column-A Column-B
1 1 1 1
1A 2A 1 4
2B 3B
以下是我已經用於檢查表-1值的列-A在表-2存在與否然後添加缺少的12倍編寫的代碼:
'Sub MergeMissing()
Dim xlsData As Worksheet
Dim xlsTracker As Worksheet
Dim lngRowNumber As Long
Dim lngTargetRow As Long
Dim rngDataCell As Range
Dim dctIndex As Object
'# initialise
Set xlsData = ThisWorkbook.Worksheets("Sheet-1")
Set xlsTracker = ThisWorkbook.Worksheets("Sheet-2")
Set dctIndex = CreateObject("Scripting.Dictionary")
dctIndex.CompareMode = 1
'# build index of existing values
With xlsTracker
lngTargetRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For lngRowNumber = 1 To lngTargetRow
If Not dctIndex.Exists(.Cells(lngRowNumber, "A").Value) Then
dctIndex.Add .Cells(lngRowNumber, "A").Value, lngRowNumber
End If
Next lngRowNumber
End With
'# copy data that does not exist as yet
With xlsData
For lngRowNumber = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
If Not dctIndex.Exists(.Cells(lngRowNumber, "A").Value) Then
lngTargetRow = lngTargetRow + 1
xlsTracker.Cells(lngTargetRow, "A").Value = .Cells(lngRowNumber, "A").Value
lngTargetRow = lngTargetRow + 1
xlsTracker.Cells(lngTargetRow, "A").Value = .Cells(lngRowNumber, "A").Value
lngTargetRow = lngTargetRow + 1
xlsTracker.Cells(lngTargetRow, "A").Value = .Cells(lngRowNumber, "A").Value
lngTargetRow = lngTargetRow + 1
xlsTracker.Cells(lngTargetRow, "A").Value = .Cells(lngRowNumber, "A").Value
lngTargetRow = lngTargetRow + 1
xlsTracker.Cells(lngTargetRow, "A").Value = .Cells(lngRowNumber, "A").Value
lngTargetRow = lngTargetRow + 1
xlsTracker.Cells(lngTargetRow, "A").Value = .Cells(lngRowNumber, "A").Value
lngTargetRow = lngTargetRow + 1
xlsTracker.Cells(lngTargetRow, "A").Value = .Cells(lngRowNumber, "A").Value
lngTargetRow = lngTargetRow + 1
xlsTracker.Cells(lngTargetRow, "A").Value = .Cells(lngRowNumber, "A").Value
lngTargetRow = lngTargetRow + 1
xlsTracker.Cells(lngTargetRow, "A").Value = .Cells(lngRowNumber, "A").Value
End If
Next lngRowNumber
End With
End Sub
在此示例數組中使用。它應該會更快。你也可以編寫12次添加的代碼,我只做了1次。 – Ionut
嗨Lonut,對於遲歸還遺憾,這是工作像一個魅力:) –
沒問題。很高興我能幫助你。 – Ionut