2

Я просто хочу взять данные из столбца A и поместить их в столбец B, строка 1; Колонка C, строка 1 и колонка D, строка 1.

Я хочу поместить это в группы по три сверху вниз.

Например:

Column A
1
2
3
4
5
1
1
2
3

Я хочу, чтобы это выглядело так

1 2 3
4 5 1 
1 2 3

и продолжай идти.

3 ответа3

3

Вы можете использовать формулу для достижения этой цели.

=INDIRECT(ADDRESS((ROW($A1)-1)*3+COLUMN(A1),1))

Введите формулу выше в пустую ячейку. Скопируйте его на 2 ячейки вправо, затем вниз, пока не начнете получать нули (удалите их).

В этой формуле A1 указывает на первый элемент в столбце, который вы хотите переставить. Чтобы изменить количество столбцов, измените 3 в формуле на другое.

1

Вот способ сделать это в VBA (при условии, что данные находятся в столбце A):

Option Explicit

Sub movetocolumns()
Dim i As Integer, iRow As Integer
Dim arrSource As Variant

'Set the first row
iRow = 1

With ActiveWorkbook.Worksheets("Sheet1")
    'get the data into an array from the first column
    arrSource = Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))

    'parse every value of the array and add the data to the next column
    For i = 1 To (UBound(arrSource) - UBound(arrSource) Mod 3) Step 3
        .Cells(iRow, 2) = arrSource(i, 1)
        .Cells(iRow, 3) = arrSource(i + 1, 1)
        .Cells(iRow, 4) = arrSource(i + 2, 1)
        iRow = iRow + 1
    Next i
    'add the remaining values
    Select Case UBound(arrSource) Mod 3
        Case 1  'one item to add
            .Cells(iRow, 2) = arrSource(i, 1)
        Case 2  'still two items to add
            .Cells(iRow, 2) = arrSource(i, 1)
            .Cells(iRow, 3) = arrSource(i + 1, 1)
        Case Else   'nothing to add
    End Select
End With
End Sub
0

Это не совсем красиво, но я смог сделать это с 3 вспомогательными столбцами и сводной таблицей, как показано ниже.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .