Preciso manter a ordem dos dados. Então, para explicar, preciso mover os dados da célula
a1 para b1,
a2 para c1,
a3 para d1,
a4 para e1,
a5 para f1,
a6 para g1,
a7 para h1,
a8 para i1,
a9 a B2
a10 a C2
a11 a D2
a12 a E2
a13 a F2
a14 a G2
a15 a H2
a16 a I2
Enxágue e repita até passar por todas as 24.000 entradas na coluna A
Certamente existe uma maneira fácil de fazer isso via macro ou vba? Talvez um recurso nas versões mais recentes já possa fazer isso?
Responder1
Aqui está uma solução VBA:
Option Explicit
Private Sub ReArrangeCells()
Dim ws As Worksheet, LastRow As Long
Set ws = Excel.ActiveSheet
LastRow = Range("A65536").End(xlUp).Row
Dim i As Long, j As Long, FromCell As Range, ToCell As Range, sNewCol As String, sNewRow As String
For i = 1 To LastRow
Set FromCell = ws.Range("A" & i) 'the cell we want to move
sNewCol = IIf(i Mod 8 = 0, Chr$(72), Chr$((i Mod 8) + 64))
sNewRow = IIf(i Mod 8 = 0, (i \ 8), (i \ 8) + 1)
Set ToCell = ws.Range(sNewCol & sNewRow) 'the cell we want to copy the data to
FromCell.Copy ToCell
If i <> 1 Then FromCell.Clear
If i Mod 100 = 0 Then DoEvents
Next i
End Sub
Responder2
Aqui está uma solução. Ele assume o seguinte:
- Todos os dados originais estão na coluna A
- A coluna B contém apenas o índice da linha
Fórmula: =INDIRECT(CONCATENATE("a",$B2*8 + col_offset))
onde col_offset é o número da coluna (indexado zero). Então na primeira coluna seria =INDIRECT(CONCATENATE("a",$B2*8))
e na 8ª coluna seria =INDIRECT(CONCATENATE("a",$B2*8+7))
.
Uma imagem para deixar as coisas mais claras:
Editar:Nova fórmula: =INDIRECT(CONCATENATE("a",(ROW()-2)*8+(COLUMN()-3)))
onde -2
e -3
são deslocamentos de linha e coluna. Basta colar isso em todas as células onde deseja que seus dados apareçam. (esta solução é melhor porque a coluna B agora pode ser excluída)
Responder3
As respostas do VBA são as melhores para lidar com uma grande quantidade de dados, mas vou ressaltar que você também pode fazer isso copiando/colando usando "Transpor". É uma solução fácil de clicar com o botão direito para pequenas necessidades. Isso se aplica a 2010 com certeza e acredito que 2007 também.
Parece que ainda não consigo fazer imagens.
- Copie suas células verticalmente
- Clique com o botão direito em outra célula e use a quarta opção em “Opções de colagem” (parecem dois retângulos azuis em ângulos retos)
Mais rápido em algumas circunstâncias.