Excel VBA检查是否有新数据,如果有新副本到单独的工作表

时间:2019-05-03 16:00:27

标签: excel vba copy-paste lookup countif

我对VBA还是很陌生,我正在尝试构建一个代码来检查是否有新数据。如果有任何新项目,则将它们复制到另一张纸上。

我在三列(B:D)中有数据,我有将其值复制为E:G的代码,并且我试图查看E列以查看是否有符合条件的新项目,然后这些粘贴到另一张纸上。

我尝试添加新列并使用Countifs公式。我的代码可以做到:如果value为零(结果为countif),则其值为新值,然后将范围复制到另一张纸的底部(摘要纸)。

在Countifs中添加几个条件使摘要表中的过滤器确实变慢了,几乎无法使用。因此,我正在尝试寻找一种无需另外的countifs列即可执行相同操作的替代方法。

任何输入将不胜感激。

这是以前的代码:

Dim numberrow As Integer

Application.ScreenUpdating = False
ActiveSheet.Range("$A$4:$I$2141").AutoFilter Field:=2, Criteria1:="0"
numberrow = WorksheetFunction.CountIf(Range("b4:b5000"), "0")

If numberrow > 0 Then

    MsgBox "New Items: " & WorksheetFunction.CountIf(Range("b4:b5000"), "0")
    Columns("B:B").Select
    Selection.EntireColumn.Hidden = True

    Sheets("Std Data").Range("a5: " & "c5000").SpecialCells(xlCellTypeVisible).Copy
    Sheets("Std Trends").Activate
    Sheets("Std Trends").Range("b" & Rows.Count).End(xlUp).Offset(1).EntireRow.Resize(numberrow).PasteSpecial xlPasteValues

    LR = ActiveSheet.UsedRange.Rows.Count
    Range("n7:p7").AutoFill Destination:=Range("n7:p" & LR)


Else
    MsgBox "No New Items"
    ActiveSheet.Range("$A$4:$I$2141").AutoFilter Field:=2
End If


End Sub

0 个答案:

没有答案