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,我有两张纸,第一张和第二张。从sheet1数据中,我必须复制数据并粘贴到sheet2中,然后再次从sheet1复制另一组不同的数据并粘贴到sheet2的最后一行,我第一次粘贴了数据 Sub Copy_chains_to_other_sheet() ActiveSheet.Range("$A$1").AutoFilter Field:=8, Criteria1:="<>1", _ Operator:=xlAnd ActiveSheet.Range("$A$1:$I$681").Auto

我有两张纸,第一张和第二张。从sheet1数据中,我必须复制数据并粘贴到sheet2中,然后再次从sheet1复制另一组不同的数据并粘贴到sheet2的最后一行,我第一次粘贴了数据

Sub Copy_chains_to_other_sheet()
ActiveSheet.Range("$A$1").AutoFilter Field:=8, Criteria1:="<>1", _
Operator:=xlAnd
ActiveSheet.Range("$A$1:$I$681").AutoFilter Field:=1, Criteria1:="=*antaris*" _
    , Operator:=xlAnd
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
ActiveSheet.Next.Select
ActiveSheet.Paste
ActiveSheet.Range("$A$1").AutoFilter Field:=1
Sub Copy_chains_to_other_sheet()
ActiveSheet.Range(“$A$1”)。自动筛选字段:=8,标准1:=1_
运算符:=xlAnd
ActiveSheet.Range($A$1:$I$681”)。自动筛选字段:=1,标准1:=“=*antaris*”_
,运算符:=xlAnd
范围(“A1”)。选择
范围(选择,选择。结束(xlDown))。选择
范围(选择,选择。结束(xlToRight))。选择
选择,复制
ActiveSheet.Next.Select
活动表。粘贴
ActiveSheet.Range(“$A$1”)。自动筛选字段:=1
端接头

这是我写的宏,但我不知道如何继续。因为有一次我有5行数据,我需要从sheet1复制数据并粘贴到sheet2,下一组数据我需要粘贴到第6行,但另一次我有8行数据,我需要从第9行开始粘贴下一组数据,所以如何处理这个问题

提前感谢您的回答

问候,,
Vignesh

如果我理解正确,您希望将连续自动筛选数据的结果从Sheet1复制到Sheet2中的连续“列表”中。如果是这样的话,那么也许可以尝试以下方法来帮助你。您需要更改变量/名称以满足您的要求,我已经做了一些假设

Option Explicit

Sub copyAFs()
Dim wsONE As Worksheet, wsTWO As Worksheet
Dim ONEstrow As Long, ONEendrow As Long, ONEstcol As Long, ONEendcol As Long
Dim TWOstrow As Long, TWOnextrow As Long, TWOstcol As Long
Dim crit1col As Long, crit2col As Long
Dim crit1 As String, crit2 As String

Set wsONE = Sheets("Sheet1")
Set wsTWO = Sheets("Sheet2")
ONEstrow = 1
ONEstcol = 1
ONEendcol = 10
TWOstrow = 1
TWOstcol = 1
crit1 = "antaris"
crit2 = "1"
crit1col = 1
crit2col = 8

    With wsTWO
        TWOnextrow = .Cells(.Rows.Count, TWOstcol).End(xlUp).Row + 1
    End With

'clear autofilter
wsONE.AutoFilterMode = False

    'apply autofilter
    With wsONE
        ONEendrow = Cells(Rows.Count, ONEstcol).End(xlUp).Row + 1
            With .Range(.Cells(ONEstrow, ONEstcol), .Cells(ONEendrow, ONEendcol))
                'set autofilter
                .AutoFilter Field:=crit1col, Criteria1:=crit1
                .AutoFilter Field:=crit2col, Criteria1:=crit2
            End With
    End With

    'copy filtered range without header
    With wsTWO
        wsONE.AutoFilter.Range.Offset(1, 0).Copy Destination:=.Range(.Cells(TWOnextrow, TWOstcol), .Cells(TWOnextrow, TWOstcol))
    End With

    'clear autofilter
    wsONE.AutoFilterMode = False

End Sub

什么决定了需要复制的区域?循环指定区域以查找符合条件的单元格,然后设置区域边界,可以使用行号和列号变量(而不是字母)循环该区域。一旦我了解了决定您选择范围逻辑的因素,我就可以向您展示。复制的范围不是固定的。根据过滤条件,它会有所不同。上面我给出的代码被记录下来了。现在的问题是,我在另一张纸上粘贴数据,在那张纸上我已经粘贴了A1到C3的数据。例如,现在我需要在A4列中粘贴下一组数据。对不起,我没有得到你要的。是什么决定了范围,我没有得到它。我也无法添加图像,我不知道如何解释我的情况。我道歉。你是说范围改变了。首先,你如何决定它是什么?据我所知,在所有后续副本上,您都会从上一个范围的中断处重新开始。但是当你决定第一次使用时,你是如何得出范围的?一次是5,另一次是8。是什么让你做出这个决定的?为什么是5还是8?嗨,Barryleajo,代码很好用。非常感谢您的帮助:)Hi@Barryleajo,在上面的代码中,您编写了任何将数据复制到另一个工作表的代码,但是在相同的场景中,我需要删除该行,而不是复制到另一个工作表。你能在这方面帮助我吗?@Vigneshwaran Kandaswamy要尊重这个网站的“规则”和“精神”,请发布另一个问题。还要弄清楚要删除的行是否在自动筛选范围内;是否可以是一行或多行以及删除的标准。如果可以的话,我当然会帮忙。