Скопируйте и вставьте значения из строки несколько раз в столбце в Excel с помощью VBA - PullRequest
0 голосов
/ 04 октября 2019

В настоящее время я работаю над проектом на VBA, который требует многократных манипуляций с данными.

Итак, основная идея этого заключается в том, чтобы получить данные, которые у меня есть в «Q1», и вставить их 4 раза в A (начиная с первой пустой ячейки), после этого взять данные из «Q2 "и делайте то же самое, пока в столбце" Q "больше не будет данных. После того, как больше нет данных, процесс должен остановиться.

Позже мне может понадобиться изменить процесс, поэтому значение вставляется только 2 или 3 раза вместо 4.

Примерно так:

Данные столбца Q:

enter image description here

Ожидаемый результат:

enter image description here

1 Ответ

1 голос
/ 04 октября 2019

Я думаю, что это будет делать то, что вы хотите:

Option Explicit

Sub Transpose_Multiplied()
    Dim Number_Of_Repetitions As Integer
    Dim Input_Column As String
    Dim Output_Column As String
    ' -----------------------------------------------------------
    ' These are the control variables ....
        Number_Of_Repetitions = 4
                 Input_Column = "Q"
                Output_Column = "A"
    ' -----------------------------------------------------------
    Dim WSht As Worksheet
    Dim Cell As Range
    Dim LastACell As Long
    Dim i As Integer

    Set WSht = ActiveWorkbook.ActiveSheet
    For Each Cell In WSht.Range(Input_Column & "2:" & Input_Column & WSht.Cells(WSht.Rows.Count, Input_Column).End(xlUp).Row)
        For i = 1 To Number_Of_Repetitions
            LastACell = WSht.Cells(WSht.Rows.Count, Output_Column).End(xlUp).Row
            If LastACell = 1 And WSht.Cells(LastACell, Output_Column).Value = vbNullString Then
                WSht.Cells(LastACell, Output_Column).Value = Cell.Value
            Else
                WSht.Cells(LastACell + 1, Output_Column).Value = Cell.Value
            End If
        Next
    Next
End Sub

Итак, я открываю свою рабочую книгу и оставляю ее открытой на Рабочем листе, где находятся данные для обработки. Затем я запускаю макрос из моего PERSONAL.XLSB:

enter image description here

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