Excel 过滤循环中的数据并将数据复制到其他图纸-处理错误
我在一个循环中传递过滤条件,以过滤数据表中的数据,如果用户选择启用,则从C列选择过滤数据;如果用户选择禁用,则从D列选择过滤数据,并将数据复制粘贴到其他表中Excel 过滤循环中的数据并将数据复制到其他图纸-处理错误,excel,vba,loops,filtering,Excel,Vba,Loops,Filtering,我在一个循环中传递过滤条件,以过滤数据表中的数据,如果用户选择启用,则从C列选择过滤数据;如果用户选择禁用,则从D列选择过滤数据,并将数据复制粘贴到其他表中 Run-time Error '1004': We can't paste because the copy area and paste area aren't same size. 过滤数据可能大于1行,这就是为什么我决定通过查找最后一行并将代码编写为:仅复制可见单元格来复制数据 x = Cells(Rows.Count, "A").
Run-time Error '1004':
We can't paste because the copy area and paste area aren't same size.
过滤数据可能大于1行,这就是为什么我决定通过查找最后一行并将代码编写为:仅复制可见单元格来复制数据
x = Cells(Rows.Count, "A").End(xlUp).Row
Range("C2:C" & x).SpecialCells(xlCellTypeVisible).Copy
OR
x = Cells(Rows.Count, "A").End(xlUp).Row
Range("D2:D" & x).SpecialCells(xlCellTypeVisible).Copy
当筛选条件位于数据表的第一行时,这段代码会给我一个错误,它不是选择单行数据,而是选择整行数据,并在粘贴到另一张表时抛出一个错误
Run-time Error '1004':
We can't paste because the copy area and paste area aren't same size.
根据第二个过滤标准,其工作良好
我正在寻找的可能解决方案:
因此,我没有选择整个可见数据列,而是在for..Next循环中寻找另一个循环,它只在可见单元格之间循环,并逐行将数据复制到另一个工作表
下面是整个代码:
Sub CommentGen_Auto()
Dim i As Long, n As Long, x As Long, lastrow As Long
Dim wb As Workbook
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set wb = ThisWorkbook
wb.Worksheets("Filter").Select
Range("H3:H100").Clear
n = Cells(Rows.Count, "B").End(xlUp).Row
For i = 3 To n
wb.Worksheets("Filter").Select
Name = Cells(i, "B").Value
groupname = Cells(i, "C").Value
Action = Cells(i, "D").Value
class = Cells(i, "E").Value
wb.Worksheets("Data").Select
Range("A1").AutoFilter Field:=1, Criteria1:=Name
Range("A1").AutoFilter Field:=2, Criteria1:=groupname
Range("A1").AutoFilter Field:=5, Criteria1:=class
If Not IsEmpty(Action) Then
If Action = "Enable" Then
x = Cells(Rows.Count, "A").End(xlUp).Row
Range("C2:C" & x).SpecialCells(xlCellTypeVisible).Copy
Else
x = Cells(Rows.Count, "A").End(xlUp).Row
Range("D2:D" & x).SpecialCells(xlCellTypeVisible).Copy
End If
wb.Worksheets("Filter").Select
lastrow = Cells(Rows.Count, "I").End(xlUp).Row + 2
Range("I" & lastrow).PasteSpecial xlPasteAll
wb.Worksheets("Data").Select
Range("A1").AutoFilter
End If
Next
wb.Worksheets("Filter").Select
Range("A1").Select
End Sub
要筛选的数据表:
错误快照:这是一项很长的任务。你能把你的主要问题归结为几行代码,并针对次要问题发布新的问题吗?嘿@WolfgangJacques,你可以检查图像以确定问题的定义,我从循环代码中得到一个错误。当我使用变量筛选数据表时,当筛选条件是数据表的第一行时,这会给我一个错误。欢迎访问该站点!我同意@WolfgangJacques-我认为没有发现评论是一个问题,错误1004是另一个问题。您可以使用“编辑”链接编辑此问题,以剪切后半部分,然后将其粘贴到另一个问题中。您一次可以有多个问题,网站定制鼓励您提出更小、更集中的问题。您也可以根据需要将问题链接到一起,只需将一个问题的URL放在另一个问题中即可。当然@cxw我将创建单独的问题,谢谢。您可能会从阅读中受益。这是一项相当长的任务。你能把你的主要问题归结为几行代码,并针对次要问题发布新的问题吗?嘿@WolfgangJacques,你可以检查图像以确定问题的定义,我从循环代码中得到一个错误。当我使用变量筛选数据表时,当筛选条件是数据表的第一行时,这会给我一个错误。欢迎访问该站点!我同意@WolfgangJacques-我认为没有发现评论是一个问题,错误1004是另一个问题。您可以使用“编辑”链接编辑此问题,以剪切后半部分,然后将其粘贴到另一个问题中。您一次可以有多个问题,网站定制鼓励您提出更小、更集中的问题。您也可以将问题链接到一起,只需将一个问题的URL放在另一个问题中即可。当然@cxw我将创建单独的问题,谢谢。您可能会从阅读中受益。