Como posso dividir os dados do Excel de 1 coluna em 8 colunas, mantendo os dados em uma ordem específica?

Como posso dividir os dados do Excel de 1 coluna em 8 colunas, mantendo os dados em uma ordem específica?

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:

  1. Todos os dados originais estão na coluna A
  2. 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:

insira a descrição da imagem aqui

Editar:Nova fórmula: =INDIRECT(CONCATENATE("a",(ROW()-2)*8+(COLUMN()-3)))onde -2e -3sã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.

informação relacionada