Em A1, insira a fórmula:% =INDEX($J$1:$J$8000,(ROW()-1)*8+COLUMN())
Copie a fórmula para todas as células de A1: H1
Na barra de endereço, digite "A1: H8000" e pressione CTRL + D para preencher a fórmula em todas as linhas.
Eu tenho a seguinte lista de dados:
A1
1
2
3
4
5
6
7
8
9
10
e preciso transformar os dados para:
A1 B1 C1 D1 E1
1 2 3 4 5
A2 B2 C2 D2 E2
6 7 8 9 10
Aqui está um código VBA. Não se esqueça de atualizar os valores sourceRange , targetCell e colunas .
Sub GenerateMatrix()
Dim rows As Integer, columns As Integer
Dim sourceRange As Range
Dim targetCell As Range
Dim cellCount As Integer, i As Integer, j As Integer
Dim arr As Variant
Set sourceRange = Range("Sheet2!A1:A10")
Set targetCell = Range("Sheet2!A1")
cellCount = sourceRange.Count
ReDim arr(1 To cellCount)
For i = 1 To cellCount
arr(i) = sourceRange.Cells(i, 1)
Next i
columns = 5
rows = cellCount / 5
For j = 1 To rows
For i = 1 To columns
targetCell.Offset(j - 1, i - 1) = arr((j - 1) * columns + i)
Next i
Next j
End Sub
Tags microsoft-excel