2013-09-14 2 views
0

Мне нужна помощь относительно макроса MS Excel. У меня есть еще 1000 строк, но мне нужно только скопировать несколько листов в другой. Столбцы уже отсортированы по возрастанию по убыванию. Короче говоря, макрос будет копировать только несколько строк, если ячейка «M26» имеет значение = 6, то макрос будет копировать только 6 строк на другой рабочий лист.Скопируйте только несколько строк

x = 2 
    Do While Cells(x, 1) <> "" 
    If Cells(x, 3) = "Africa" Then 
     Worksheets("srcSheets").Rows(x).Copy 
     Worksheets("destSheet").Activate 
     erow = Worksheets("destSheet").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 
     ActiveSheet.Paste Destination:=Worksheets("destSheet").Rows(erow) 
    End If 
     Worksheets("srcSheets").Activate 
     x = x + 1 
    Loop 
+0

Вы также можете использовать фильтр и скопировать строки, которые вам нужны, на другой лист. И около 1000 строк на самом деле не так много :) – Jerry

+0

Привет, jerry, я уже использую фильтр и копирую с другого листа. Проблема в том, что я не могу контролировать, сколько строк должно быть скопировано на листе. –

+0

Почему бы и нет? Когда вы выбираете строки, в строке состояния есть «счет», и вы можете легко подсчитать количество ячеек в одном столбце, и как только вы получите требуемый номер, выберите все остальные столбцы, не изменяя количество строк и не скопируйте/вставьте. Если вам все еще нужен макрос, вы должны показать, что у вас есть. – Jerry

ответ

0

Это скопирует строки 2 по x из листа 1 в лист2, где x - это число в листе2 A1. Возможно, вам придется добавить некоторую обработку ошибок. Отредактируйте его в соответствии с вашими потребностями.

Sub copyrows() 

Dim x As Integer 

x = Worksheets("sheet2").Range("A1").Value 

Worksheets("sheet1").Rows("2:" & x).Copy Destination:=Worksheets("sheet2").Rows(1) 

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