2013-09-05 2 views
0

Я записал макрос, чтобы ссылаться на данные Sheet1 и перетащить его на Sheet2.Создание петли

Мне нужно продолжить, пока на листе 1 (или строке 209) больше нет данных.

Sub Macro1() 
    Range("A1").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!RC" 
    Range("A2").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-1]C" 
    Range("A3").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-2]C" 
    Range("A4").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-2]C" 
    Range("A5").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-3]C" 
    Range("A6").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-4]C" 
    Range("A7").Select 
End Sub 
+0

Является ли шаблон всегда одинаковым каждые шесть ячеек? В вашем примере ячейки A1-A3 всегда одинаковы (т. Е. Ячейка A1 на листе 1) и от A4 до A6 одинаковы (т. Е. Ячейка A2 на листе 1). Отображение моментальных снимков ваших данных может помочь здесь ... –

ответ

0

Похоже, из кода, который вы просто копирование и вставка из Лист1 на Лист2, но для каждой строки, вы спуститесь в Лист2, вы поднимаетесь строку в Лист1. Другими словами, "=Sheet1!R[-x]C" заставляет его выглядеть так, как будто вы поднимаетесь на строку х.

Что представляет собой ваш код - это пошаговый процесс выбора каждой ячейки, а затем ее изменения. Почему бы не сделать это сразу without the .Select statments?

Например, For...Next цикл мог бы сделать это:

For i = 1 To 209 
    Worksheets("Sheet2").Cells(210 - i, 1).Value = _ 
    Worksheets("Sheet1").Cells(i, 1).Value 
Next 

Это копирует содержимое клеток (свойство .value) напрямую.

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