2015-11-09 5 views
3

Я работаю на листе первенствовать и нужно переместить тот же диапазон снова и снова в колонке «P» + 2значения шаг ячейки в Excel через VBA

Поэтому следующий диапазон будет «C15: G15 "до" P14 ". Я ищу громоздкое решение, чем повторять этот код и изменить диапазоны сотни раз ..

ActiveWindow.SmallScroll Down:=-3 
Range("C13:G13").Copy 
Application.CutCopyMode = False 
Selection.Copy 
Range("P12").Select 
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _ 
    , SkipBlanks:=False, Transpose:=False 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

ответ

3

Этого быстрый фрагмент должны идти вниз каждую вторую строку в столбце C, начиная со строкой 13 до последнего заселены ячейка в колонке C.

Sub move_CG_to_PT() 
    Dim rw As Long 

    With Worksheets("Sheet4") '<~~set this worksheet reference properly! 
     For rw = 13 To .Cells(.Rows.Count, "C").End(xlUp).Row Step 2 
      .Cells(rw - 1, "P").Resize(1, 5) = _ 
       .Cells(rw, "C").Resize(1, 5).Value 
     Next rw 
    End With 
End Sub 

Это только передает значения. Если форматирование и/или тема имеют решающее значение, тогда их можно настроить следующим образом.

Sub move_CG_to_PT_w_Formatting() 
    Dim rw As Long 

    With Worksheets("Sheet4") '<~~set this worksheet reference properly! 
     For rw = 13 To .Cells(.Rows.Count, "C").End(xlUp).Row Step 2 
      .Cells(rw, "C").Resize(1, 5).Copy _ 
       Destination:=.Cells(rw - 1, "P") 
     Next rw 
    End With 
End Sub 
+0

@ R3uK - Обычно я использую 'Rows.Count' при работе с листом. Слишком часто я нахожусь в ограниченном диапазоне, указанном в [With ... End With statement] (https://msdn.microsoft.com/en-us/library/wc500chb.aspx) и вам нужно использовать '.Rows.Count 'на усеченном диапазоне. Сохранение количества строк в таблице без периода префикса помогает мне «видеть» разницу. Во всех смыслах и целях они одинаковы, если XLS не смешивается с XLSX. – Jeeped

+0

Хорошо, я понял, извините за дикое редактирование! ;) Я больше привык загружать диапазоны в массивы, чтобы выполнить все тесты, а затем применить изменения в листе, старые привычки умереть! ;) – R3uK

+0

Спасибо большое! Как сохранить исходное форматирование здесь? – mtorben

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