Цикл Excel Range Loop Through, копирование / вставка (некоторые сложности) - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть диапазон данных (C2: C100) в «sheet2».Я хочу скопировать, по отдельности, вставить в ячейку A2 рабочего листа «Подробный LOC», скопировать результаты из (A2: K2) «Подробного LOC» и вставить (только значение) в (A2: K2) для первого значения, (A3: К3) для второго и т. Д.) Листа "Все LOC".Я читал, что копирование / вставка являются интенсивными, но формулы в ячейках (A1: D1) в sheet2 сложны, и мне нужны только значения, которые они производят в результирующей вставке в «All LOC».Я записал макрос для того, что я хочу, для первой ячейки в диапазоне от «sheet2».Я не уверен, как интегрировать цикл, чтобы он повторялся для всего диапазона «sheet2», а также как заставить его вставлять результаты в «ALL LOC» в нисходящие строки.Обратите внимание, что шаг, выполняемый во «ALL LOC», всегда выполняется во 2-й строке (A2: K2), а не в нисходящей строке.Спасибо за любую помощь / совет.

Range("C2").Select
Selection.Copy
Sheets("Detailed LOC").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Range("A2:K2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("All Loc").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Sheets("Sheet2").Select
Range("A1").Select

1 Ответ

0 голосов
/ 08 февраля 2019

Пожалуйста, попробуйте и настройте код в соответствии с вашими потребностями.

Сделайте резервную копию своей книги перед попыткой!

Sub CopyRanges()

    ' Declare objects
    Dim sourceRange As Range
    Dim detailedRange As Range
    Dim sourceCell As Range

    ' Declare other variables
    Dim sourceSheetName As String
    Dim detailedSheetName As String
    Dim allSheetName As String
    Dim sourceRangeAddress As String
    Dim counter As Integer ' Change for long if more than 32.000 items

    ' Initialize variables
    sourceSheetName = "Sheet2"
    detailedSheetName = "Detailed LOC"
    allSheetName = "All LOC"

    ' Define the address of the source range
    sourceRangeAddress = "C2:C100"

    ' Initialize the source range
    Set sourceRange = ThisWorkbook.Worksheets(sourceSheetName).Range(sourceRangeAddress)

    counter = 1

    ' Loop through each cell in source range
    For Each sourceCell In sourceRange

        ' Copy to detailed sheet (no selection - copy - paste!) - Change the column "A" if needed
        ThisWorkbook.Worksheets(detailedSheetName).Range("A" & sourceCell.Row).Value = sourceCell.Value

        ' Copy to all sheet (if you have formulas, this pastes the values. As you didn't mention, please confirm)  - Change the column "A and K" if needed
        ThisWorkbook.Worksheets(allSheetName).Range("A" & sourceCell.Row & ":" & "K" & sourceCell.Row).Value = ThisWorkbook.Worksheets(detailedSheetName).Range("A" & sourceCell.Row & ":" & "K" & sourceCell.Row).Value

        counter = counter + 1

    Next

    MsgBox "processed " & counter & " cells"

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...