Vba 粘贴isn';t工作正常,有时粘贴重复数据

Vba 粘贴isn';t工作正常,有时粘贴重复数据,vba,excel,Vba,Excel,我正在编写一个宏,用于在Excel中从一张工作表过滤、复制和粘贴一些数据。数据包含我需要筛选的3个类别,我成功地做到了这一点。但是,当我将数据复制并粘贴到另一张图纸上时,它有时会复制粘贴的数据 例如:输出应如下所示: Record1 Record2 但实际上看起来是这样的: Record1 Record2 Record1 Record2 我正在使用 ActiveSheet.AutoFilter.Range.Copy 抄袭 ActiveSheet.Paste 用于粘

我正在编写一个宏,用于在Excel中从一张工作表过滤、复制和粘贴一些数据。数据包含我需要筛选的3个类别,我成功地做到了这一点。但是,当我将数据复制并粘贴到另一张图纸上时,它有时会复制粘贴的数据

例如:输出应如下所示:

 Record1

 Record2
但实际上看起来是这样的:

 Record1

 Record2

 Record1

 Record2
我正在使用

 ActiveSheet.AutoFilter.Range.Copy
抄袭

 ActiveSheet.Paste
用于粘贴

我尝试过为每一次新的复制粘贴清除剪贴板,并检查了我的代码,以确保我没有多次粘贴相同的东西,我不知道为什么会发生这种情况

这就是我的代码的样子:

Clearing the clipboard, filters and temp sheets for reuse:
Application.CutCopyMode = False
Sheets("Sheet2").AutoFilterMode = False
Sheets("Sheet3").AutoFilterMode = False
Sheets("Sheet3").Cells.Clear

'Filtering out the Category3 records:
        Sheets("Sheet2").Activate

            'Getting the range of the sheet
            With ActiveSheet
                Dim LR25 As Long
                    LR25 = .Cells(.Rows.Count, "A").End(xlUp).Row
            End With

            ActiveSheet.AutoFilterMode = False
            ActiveSheet.Range("$A$1:$X$" & LR25).AutoFilter Field:=2, Criteria1:="Category3"

            'Copying the filtered data:
                ActiveSheet.AutoFilter.Range.Copy

                'Pasting the copied data:
                    Sheets("Sheet3").Activate
                    ActiveSheet.Paste

                'Clearing the clipboard:
                Application.CutCopyMode = False

                'Getting the range of the sheet for dynamic range adjustment
                 With ActiveSheet
                    Dim LR26 As Long
                        LR26 = .Cells(.Rows.Count, "A").End(xlUp).Row
                End With

                        Sheets("Sheet5").Activate
                        With ActiveSheet
                                Range("C64").Value = LR26 - 1
                        End With

                'Filtering  records :
                Sheets("Sheet3").Activate


                                ActiveSheet.Range("$A$1:$X$" & LR26).AutoFilter Field:=5, Criteria1:="Filter-criteria"

                            'Deleting all the records for getting the desired records:
                                ActiveSheet.Range("$A$1:$X$" & LR26).Offset(1).SpecialCells(12).EntireRow.Delete
                                ActiveSheet.AutoFilterMode = False


                'Puting the results in the desired sheet
                Sheets("Sheet5").Activate
                With ActiveSheet

                        Range("D64").Formula = "=COUNTIF('Sheet3'!B:B,""Category3"")"
                        Range("D64").Value = Range("D64").Value


                        Range("E64").Formula = "=COUNTIF('Sheet3'!T:T,""Example Category"")"
                        Range("E64").Value = Range("E64").Value


                        Range("F64").Formula = "=COUNTIF('Sheet3'!T:T,""Example Catgeory"")"
                        Range("F64").Value = Range("F64").Value


                        Range("G64").Formula = "=COUNTIF('Sheet3'!T:T,""Example Catgeory"")"
                        Range("G64").Value = Range("G64").Value
                End With
End Sub
这是另一条信息,我不确定它是否有用:

Category 1 contains 10 records
Category 2 conatins 20 records 
Catgeory 3 contains 5 records
但结果显示:

 Category 1 contains 10 records
 Category 2 conatins 20 records 
 Catgeory 3 contains 20 records
您正在使用:

ActiveSheet.AutoFilter.Range.Copy
此方法将自动筛选表的整个范围复制到缓冲区中。粘贴时,它可以忽略该范围中的某些区域当时是否可见

如果只复制可见单元格,则只需获得所需的单元格:

ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy

但请注意,您应尽量避免使用
ActiveSheet
Activate
Select
等,而应直接引用所涉及的范围。这是一个非常好的参考指南,可用于此方法。

您需要展示更多代码,以便我们了解问题所在。这两行还不够。@ScottCraner很抱歉。刚刚编辑了我的代码。尝试过,但不幸的是,它没有改变任何东西。我将研究避免活动表等主题。我确实记得看过一篇关于这个的帖子。干杯