这个问题很容易回答,问题有两个方面。
- 您的计算机有多快?
- 您需要多久运行一次此代码?
我问这些问题的原因是因为要在 50,000 行上运行任何代码,无论实际完成这项工作的代码有多小……你需要一台相当强大的计算机,否则这段代码会让您的计算机停止运行,或者至少在 1 到 3 分钟以上的时间内表现出色,具体取决于您实际拥有的内存量和速度。
在没有看到工作簿的情况下,您需要一些非常简单的公式,但您要做的就是在工作簿中添加另一行。在 P 列中,您需要一个验证公式。这个公式很简单,但取决于您需要多少参考点。
=COUNTIFS('Sheet2'!$A:$A,$A3,'Sheet2'!$E:$E,$E3)
从那里你可以看到什么是重复的。然后,您可以在 Q 列中使用如下公式:
=IF($P3,"SAME","")
它会告诉你数据是否相同。基本上它说如果单元格 P3 中除了 0 之外还有其他内容,它会说存在相同的内容,否则不是。
从那里你需要一个类似这样的代码:
Sub Update_TNOOR()
Dim wsS1 As Worksheet
Dim wsS2 As Worksheet
Dim lastrow As Long, fstcell As Long
Set wsS1 = Sheets("Sheet1")
Set wsS2 = Sheets("Sheet2")
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
End With
With wsS1
wsS1.Columns("P:Q").ClearContents
ThisWorkbook.Sheets("Sheet1").Cells(1, 16).Value = “=COUNTIFS('Sheet2'!$A:$A,$A3,'Sheet2'!$E:$E,$E3)"
ThisWorkbook.Sheets("Sheet1").Cells(1, 17).Value = “=IF($P3,"Same",””””)"
wsS2.Columns("P:Q").ClearContents
ThisWorkbook.Sheets("Sheet2").Cells(1, 16).Value = “=COUNTIFS('Sheet1'!$A:$A,$A3,'Sheet1'!$E:$E,$E3)"
ThisWorkbook.Sheets("Sheet2").Cells(1, 17).Value = “=IF($P3,"Same",”Different”)"
End With
With Intersect(wsS1, wsS1.Columns("Q"))
.AutoFilter 1, "<>Same"
With Intersect(.Offset(2).EntireRow, .Parent.Range("B:Q"))
.EntireRow.Delete
End With
.AutoFilter
End With
'Blow away rows that are useless
lastrow = wsS2.Range("A2").End(xlDown).Row
wsS2.Range("P1:Q1").Copy wsS2.Range("P2:Q" & lastrow)
With Intersect(wsS2.UsedRange, wsS2.Columns("Q"))
wsS2.Range("P:Q").Calculate
.AutoFilter 1, "<>Different"
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
With wsS2
lastrow = wsS2.Range("A1").End(xlDown).Row
Intersect(.UsedRange, .Range("A1:N" & lastrow)).Copy wsS1.Cells(Rows.Count, "B").End(xlUp).Offset(1)
End With
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.EnableEvents = True
End With
End Sub
这应该会让你上路......如果我读到你正在尝试正确做的事情。
正如人们所说,你想要做的事情可以在 excel 中完成,如果它,我不知道......这里的人似乎不这么认为,但如果你需要使用 excel,这应该会让你继续你的方式。
同样,我不知道您的工作簿是什么样的,所以我希望这会有所帮助。这会比较数据并将其合并到第一张工作表中。 IT 不会做你想做的所有事情......但这应该能让你顺利上路。