2017-01-23 2 views
0

Я новичок в VBA, и я пытаюсь написать макрос в Excel, который копирует таблицу в другую таблицу, а затем удаляет строки, где ячейка равна значению «0».Скопируйте заполненные строки из таблицы в другую

У меня есть таблица выглядит следующим образом:

enter image description here

Я хочу, чтобы таблица выглядит следующим образом:

enter image description here

Может кто-нибудь мне помочь?

+0

Позвольте мне посмотреть, получилось ли это: вам нужно скопировать данные из таблицы 1, которая не равна 0, и вставить ее в таблицу2? Нужно ли удалять любые строки? На втором изображении осталось 0 на третьей строке, почему? –

+0

http://stackoverflow.com/questions/12299898/vba-copy-and-paste-table-row-to-another-table – Vityata

+0

это ошибка. он должен удалить все значения «0» –

ответ

0

Следующие будут скопировать данные из таблицы в Sheet1 в Sheet2, где второй столбец не равен 0 - с использованием Autofilter таблицы.

Я должен был добавить 1 секунду application.wait, чтобы фильтр мог применяться перед копированием. Это может потребоваться увеличить в зависимости от размера таблицы. Возможно, кто-то может помочь с более надежным методом ожидания применения фильтра.?

Dim source_sheet As Worksheet 
Dim destination_sheet As Worksheet 

Set source_sheet = Sheets("Sheet1") 
Set destination_sheet = Sheets("Sheet2") 

    With source_sheet.ListObjects("Table1").Range 
     .AutoFilter Field:=2, Criteria1:="<>0" 
     Application.Wait 1 
     .Copy Destination:=destination_sheet.Range("A1") 
     .AutoFilter Field:=2 
    End With 

Стоит отметить, что выход на Лист2 не в форме таблицы правда. Тем не менее, не должно быть сложно записать макрос, в котором вы конвертируете его в таблицу, чтобы получить этот фрагмент кода.

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