Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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,我试图从Sheet1中复制符合条件的行,并将整行张贴在当前数据的末尾。我可以复制行,但它无法粘贴。我们将不胜感激。以下是我编写的代码: Sub Button1_Click() Dim i As Integer 'Range("H2:O65536").ClearContents Sheets("Sheet1").Select LastRowColA = Range("A65536").End(xlUp).Row For i = 2 To LastRowColA If Cells(i, 6

我试图从Sheet1中复制符合条件的行,并将整行张贴在当前数据的末尾。我可以复制行,但它无法粘贴。我们将不胜感激。以下是我编写的代码:

Sub Button1_Click()

Dim i As Integer

'Range("H2:O65536").ClearContents

Sheets("Sheet1").Select
LastRowColA = Range("A65536").End(xlUp).Row

For i = 2 To LastRowColA

If Cells(i, 6) = "No" Then
Rows(i).Select
Rows(i).Copy

Sheets("Sheet2").Select
Dim LastRow As Long
Dim StartRow As Long
Dim Col As Long
Dim Row As Long

StartRow = 2
Col = 1
LastRow = findLastRow(1)

For Row = StartRow To LastRow
Rows(LastRow).Select
ActiveSheet.Paste

Next Row

Else
'do nothing
End If
Next i
End Sub


Function findLastRow(ByVal Col As Integer) As Long
    'Find the last row with data in a given column

    findLastRow = Cells(Rows.Count, Col).End(xlUp).Row
End Function

我们开始吧:稍微短一点,但应该能完成任务

Sub Button1_Click()
Dim i As Integer
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet2")

For i = 2 To ws1.Range("A65536").End(xlUp).Row
    If ws1.Cells(i, 6) = "No" Then ws1.Rows(i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 6).End(xlUp).Row + 1)
Next i
End Sub

为了增加更多的帮助,当您可以一次筛选和复制所有数据时,为什么要花费所有(处理)时间在一个可能很大的行集合中循环

请参阅下面的代码。您可能需要稍微调整它以匹配您的数据集

Sub Button1_Click()

Dim ws1 as Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1")
Dim ws2 as Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet2")

With ws1

    .UsedRange.AutoFilter 6, "No" 
    '-> assumes data starts in column A, if not adjust the 6

    Intersect(.UsedRange,.UsedRange(Offset(1)).SpecialCells(xlCellTypeVisible).Copy  
    ' -> assumes No's are there, if they may not exist, will need to error trap.

End With

With ws2

    .Rows(.Cells(ws2.Rows.Count, 6).End(xlUp).Row + 1).PasteSpecial xlPasteValues

End With

ws1.AutoFilterMode = False

End Sub
//就用它吧

Sheet2.Select (Sheet1.Rows(index).Copy)

Sheet2.Paste (Rows(index))
如果要复制,请粘贴两行或更多行,然后使用for循环