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 - Fatal编程技术网

Excel 在条件满足循环中,将单元格复制到另一张图纸

Excel 在条件满足循环中,将单元格复制到另一张图纸,excel,vba,Excel,Vba,我需要循环一列,如果满足条件,则将单元格从一张纸复制到另一张纸 我发现增量..有问题。。 在这种情况下,结果加倍 先谢谢你。 韩元 您可以使用AutoFilter获得结果,但我的答案是尝试使用For循环解析代码 修改代码 您可以使用AutoFilter获得结果,但我的答案是尝试使用For循环解析代码 修改代码 为什么不使用Autofilter筛选列C,如果Autofilter返回任何行,则将它们复制到目标工作表 看看这样的东西是否适合你 Sub CopyCells() Dim wsData As

我需要循环一列,如果满足条件,则将单元格从一张纸复制到另一张纸

我发现增量..有问题。。 在这种情况下,结果加倍

先谢谢你。 韩元


您可以使用
AutoFilter
获得结果,但我的答案是尝试使用
For
循环解析代码

修改代码


您可以使用
AutoFilter
获得结果,但我的答案是尝试使用
For
循环解析代码

修改代码


为什么不使用Autofilter筛选列C,如果Autofilter返回任何行,则将它们复制到目标工作表

看看这样的东西是否适合你

Sub CopyCells()
Dim wsData As Worksheet, WsDest As Worksheet
Dim iLastRow As Long
Application.ScreenUpdating = False
Set wsData = Worksheets("Clientes")
Set WsDest = Worksheets("Ficheros")
iLastRow = wsData.Cells(Rows.Count, "C").End(xlUp).Row

wsData.AutoFilterMode = False

With wsData.Rows(12)
    .AutoFilter field:=3, Criteria1:="0"
    If wsData.Range("D12:D" & iLastRow).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
        wsData.Range("D13:D" & iLastRow).SpecialCells(xlCellTypeVisible).Copy
        WsDest.Range("B" & Rows.Count).End(3)(2).PasteSpecial xlPasteValues
    End If
End With

wsData.AutoFilterMode = False

Application.CutCopyMode = 0
Application.ScreenUpdating = True
End Sub

为什么不使用Autofilter筛选列C,如果Autofilter返回任何行,则将它们复制到目标工作表

看看这样的东西是否适合你

Sub CopyCells()
Dim wsData As Worksheet, WsDest As Worksheet
Dim iLastRow As Long
Application.ScreenUpdating = False
Set wsData = Worksheets("Clientes")
Set WsDest = Worksheets("Ficheros")
iLastRow = wsData.Cells(Rows.Count, "C").End(xlUp).Row

wsData.AutoFilterMode = False

With wsData.Rows(12)
    .AutoFilter field:=3, Criteria1:="0"
    If wsData.Range("D12:D" & iLastRow).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
        wsData.Range("D13:D" & iLastRow).SpecialCells(xlCellTypeVisible).Copy
        WsDest.Range("B" & Rows.Count).End(3)(2).PasteSpecial xlPasteValues
    End If
End With

wsData.AutoFilterMode = False

Application.CutCopyMode = 0
Application.ScreenUpdating = True
End Sub

您通常不需要为此循环。使用过滤器,然后复制可见单元格,是一种一步完成的方法。如果
erow
表示最后一行,我不确定您是否需要
结束(xlUp)。偏移量(1)
。通常不需要循环。使用过滤器,然后复制可见单元格,是一种一步完成的方法。如果
erow
表示最后一行,我不确定您是否需要
结束(xlUp)。偏移量(1)
Sub CopyCells()
Dim wsData As Worksheet, WsDest As Worksheet
Dim iLastRow As Long
Application.ScreenUpdating = False
Set wsData = Worksheets("Clientes")
Set WsDest = Worksheets("Ficheros")
iLastRow = wsData.Cells(Rows.Count, "C").End(xlUp).Row

wsData.AutoFilterMode = False

With wsData.Rows(12)
    .AutoFilter field:=3, Criteria1:="0"
    If wsData.Range("D12:D" & iLastRow).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
        wsData.Range("D13:D" & iLastRow).SpecialCells(xlCellTypeVisible).Copy
        WsDest.Range("B" & Rows.Count).End(3)(2).PasteSpecial xlPasteValues
    End If
End With

wsData.AutoFilterMode = False

Application.CutCopyMode = 0
Application.ScreenUpdating = True
End Sub