Excel marco по копированию и вставке в определенные пустые столбцы


Нужна помощь с простым макросом excel. У меня есть данные в колонке листа 1 от X1 до X20. Я хочу автоматически вставить эту информацию в столбец A, а затем, когда я обновлю номера в столбце X, я хочу вставить эту информацию в столбец B, а затем в столбец C... Мне нужно сделать это только 12 раз. Вот простой макрос, который я попробовал.

Workbooks("copynpaste2.xlsm").Sheets("Sheet1").Range("X1:X20").copy _ 
destination:=Workbooks("copynpaste2.xlsm").Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Offset(, 1)
2 2

2 ответа:

Используйте событие Worksheet_Change. При этом событии каждый раз, когда вы изменяете столбец X, код будет срабатывать и копироваться в столбцы A... Б... С... И вам никогда не придется вручную запускать какой-либо код.

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Me.Range("X1:X20")) Is Nothing Then 'only do this when making changes to X1:X20

    Application.EnableEvents = False

    If IsEmpty(Me.Range("A1")) Then

        Me.Range("A1:A20").Value = Me.Range("X1:X20").Value

    ElseIf IsEmpty(Me.Range("B1")) Then

        Me.Range("B1:B20").Value = Me.Range("X1:X20").Value

    Else

        Me.Range("A1:A20").End(xlToRight).Offset(, 1).Value = Me.Range("X1:X20").Value

    End If

    Application.EnableEvents = True

End If

Поместите этот код в модульрабочего листа на листе, на котором расположены данные.

А как насчет этого?

Sub dothis()
    Dim c As Long
    For c = 1 To 12
        If Cells(1, c) = "" Then
            Range("X1:X20").Copy 
            Range(Cells(1, c), Cells(20, c)).Select
            Selection.PasteSpecial xlPasteValues
            selection.NumberFormat = "0.00"
            Exit Sub
        End If
    Next c
End Sub

Каждый раз, когда вы запускаете макрос, он проверяет, является ли ячейка 1 в Столбцах A:L пустой, и копирует ячейки X1: X20 в первый пустой столбец.