2015-02-05 11 views
0

Я хочу скопировать определенное число (скажем, 10) строк из одного листа («Данные») и вставить его на другой лист («Вход»). Это приведет к вычислению множества элементов Затем я хочу скопировать указанные расчетные данные (6 строк) из («Вход») в («Данные») и вставить в таблицу результатов. THEN Я бы повторил это определенное количество раз для определенного количества столбцов (позволяет .. скажем, 10)VBA Loop для копирования столбцов

Я пытался писать код, но он буквально уже много лет, так как я написал код

Я использовал запись Marco вещь и получил это:

Sub Macro2() 
' 
' Macro2 Macro 
' 

' 
    Range("C5:C14").Select 
    Selection.Copy 
    Sheets("Input").Select 
    Range("C5").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Range("P12:P19").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Data").Select 
    Range("C22").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Range("D5:D14").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Input").Select 
    Range("C5").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Range("P12:P19").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Data").Select 
    Range("D22").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Range("G16").Select 
End Sub 

Надеюсь, это имеет смысл

ответ

0
Sub Macro2() 

    Const NUM_TIMES As Long = 10 
    Dim shtInput As Worksheet, shtData As Worksheet 
    Dim rngCopy As Range, i As Long 

    Set shtInput = Sheets("Input") 
    Set shtData = Sheets("Data") 

    Set rngCopy = shtData.Range("C5:C15") 

    For i = 1 To NUM_TIMES 

     With shtInput 
      .Range("C5").Resize(rngCopy.Rows.Count, 1).Value = rngCopy.Value 
      .Calculate 
      rngCopy(1).Offset(17, 0).Resize(8, 1).Value = .Range("P12:P19").Value 
     End With 

     Set rngCopy = rngCopy.Offset(0, 1) 
    Next i 

End Sub 
+0

Отлично, что сработало! Спасибо Тиму! – Tony

+0

Tim, можно ли добавить комментарии или описания того, что делает код? Im полагает, что он принимает значения из C5: C15 и вставляет их в Input. Затем он копирует данные из P12: P19 и вставляет его в 17 строк ниже C15. Это верно? Функции смещения и изменения размера меня смущают, так как я их раньше не видел. – Tony

+0

'offset (rows, cols)' будет перемещать диапазон по указанному числу строк и столбцов - вы также можете указать отрицательные числа для перемещения влево/вверх. 'Resize (numRows, numcols)' изменяет размер диапазона, добавляя/удаляя столбцы справа/снизу. Обе эти вещи очень полезны в вашем инструменте Excel VBA. –

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