Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 过滤循环中的数据并将数据复制到其他图纸-处理错误_Excel_Vba_Loops_Filtering - Fatal编程技术网

Excel 过滤循环中的数据并将数据复制到其他图纸-处理错误

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").

我在一个循环中传递过滤条件,以过滤数据表中的数据,如果用户选择启用,则从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").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我将创建单独的问题,谢谢。您可能会从阅读中受益。