2014-11-27 2 views
0

У меня есть 2 листа, лист1 и лист2. Из sheet1 данных я должен скопировать данные и вставить в sheet2, затем снова от sheet1 я должен скопировать другой различный набор данных и вставить в sheet2 последней строке, где я вставляемые данные 1-й разСкопируйте данные Excel в

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 

End Sub

Это макрос, который я написал, но я не знаю, как продолжить. Поскольку один раз у меня есть 5 строк данных, которые мне нужно скопировать данные из листа 1 и вставить в sheet2 и со следующим набором данных, мне нужно вставить его в 6-ю строку, но в другой раз у меня есть 8 строк данных, которые мне нужны для вставки следующего набора данных из строки 9 и далее, так как с этим справиться.

Заранее благодарим за ответ.

С уважением, Вигнеша

+0

Что определяет диапазон, который необходимо скопировать? – peege

+0

Цитирование по заданному диапазону для поиска ячеек, соответствующих вашим критериям, а затем установление границ диапазона, вы можете пройти через этот диапазон, используя переменные для номера строки и столбцов вместо букв. Я могу показать вам, как только я пойму, что определяет вашу логику выбора диапазонов. – peege

+0

Скопированный диапазон не является фиксированным. в соответствии с условием фильтрации он будет отличаться. Вышеприведенный код, который я дал, записывается. Теперь проблема заключается в том, что я вставляю данные на другом листе, в этом листе я уже вставил данные от A1 до C3, например, теперь мне нужно вставить следующий набор данных в колонку A4. –

ответ

0

Если я правильно понял вы хотите скопировать результаты последовательных autofiltered данных от Лист1 до непрерывного «списка» в Лист2. Если это так, попробуйте сделать следующее. Вам нужно будет изменить переменные/имена в соответствии с вашими требованиями, я сделал некоторые предположения.

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 
+0

Привет, Barryleajo код работает нормально. Большое спасибо за вашу помощь :) –

+0

Привет @Barryleajo, В приведенном выше коде вы написали любое копирование данных на другой лист, но в том же сценарии мне нужно удалить строку вместо копирования на другой лист. Не могли бы вы помочь мне в этом. –

+0

@ Vigneshwaran Kandaswamy, чтобы уважать «правила» и «дух» этого сайта, задайте другой вопрос. Также дайте понять, находится ли строка, которую вы хотите удалить, в пределах диапазона автофильтрации; может ли это быть одна или несколько строк и какие критерии для удаления применяются. Конечно, я (для одного) поможет, если смогу. – barryleajo

Смежные вопросы