【发布时间】:2018-06-11 15:07:50
【问题描述】:
我有一个 Excel 工作表(“Sheet1”),需要与另一个工作表(“Sheet2”)进行比较。
两个工作表的格式完全相同。 (即列是相同的,具有相同的标题)
在比较 Sheet1 和 Sheet2 时,我需要检查现有记录的更新。
还要检查 Sheet2 中不存在于 Sheet1 中的新记录,并将它们附加到 Sheet1 的底部。
工作表 2 中的某些列是完全空白的,不需要检查。
第 2 列将是“关键”
另外请记住,每个工作表中有超过 7000 行。
更新#1:
使用字典对象,我想出了这个。但是,它似乎没有找到任何新条目。我做错了吗?
Sub createDictionary()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim maxRows1, maxRows2 As Long
Dim i, j As Integer
Dim SheetOne, SheetTwo As Worksheet
maxRows1 = Sheets("Sheet1").UsedRange.Rows.Count
Set SheetOne = Sheet1
Set SheetTwo = Sheet2
For i = 2 To maxRows1
If Not dict.exists(SheetOne.Cells(i, 2).Value + " " + SheetOne.Cells(i, 11).Value) Then
dict.Add CStr(SheetOne.Cells(i, 2).Value) + " " + SheetOne.Cells(i, 11).Value, i
End If
Next i
maxRows2 = Sheets("Sheet2").UsedRange.Rows.Count
For j = 2 To maxRows2
If Not dict.exists(Sheet2.Cells(j, 2).Value) Then
SheetTwo.Range("A" & j & ":" & "Z" & j).Copy
SheetOne.Range("A" & maxRows1 + 1).Insert Shift:=xlDown
SheetOne.Range("A" & maxRows1 + 1).Interior.Color = RGB(200, 200, 200)
End If
Next j
Set dict = Nothing
End Sub
【问题讨论】:
-
老实说,我是 VBA Excel 的新手,不知道从哪里开始。
-
我尝试了一些别人给我的东西,他们在一个小数据集上工作,但是当我应用它时总是崩溃。
-
你应该把这段代码放在这里(编辑你的问题),我们用它作为开始,让它适用于你的大型数据集。
-
这是另一个用户试图帮助我解决此问题的链接。他给我的很多东西都超出了我的想象。 stackoverflow.com/a/25067335/3891378