Как разделить данные Excel из 1 столбца на 8 столбцов, сохраняя при этом данные в определенном порядке?

Мне нужно поддерживать порядок данных. Поэтому, чтобы объяснить, мне нужно переместить данные из ячейки

a1 to b1,


a2 к c1,


a3-d1,


А4 на Е1,


a5-f1,


a6 к g1,


a7-h1,


a8-i1,

a9 to B2


от a10 до C2


a11-D2


А12 Е2


А13 в Ф2


a14-G2


А15 в H2


a16 к I2

промыть и повторить, пока я не прошел через все 24000 записей в столбце a

конечно, есть простой способ сделать это с помощью макроса или vba? Возможно, функция в самых последних версиях уже может это сделать?

18
задан soandos
06.05.2023 3:22 Количество просмотров материала 3151
Распечатать страницу

3 ответа

вот решение 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
2
отвечен wbeard52 2023-05-07 11:10

вот решение. Предполагается следующее:

  1. все исходные данные в столбце a
  2. столбец B содержит только индекс строки

Формула: in =INDIRECT(CONCATENATE("a",$B2*8 + col_offset)), где col_offset-номер столбца (с нулевым индексом). Поэтому в первой колонке это будет =INDIRECT(CONCATENATE("a",$B2*8)) а в 8-м столбце это будет =INDIRECT(CONCATENATE("a",$B2*8+7)).

картинка для наглядности:

enter image description here

Edit: новый формула: =INDIRECT(CONCATENATE("a",(ROW()-2)*8+(COLUMN()-3))) здесь -2 и -3 смещения строк и столбцов. Просто вставьте его во все ячейки, где должны отображаться данные. (это решение лучше, потому что столбец B теперь можно удалить)

2
отвечен soandos 2023-05-07 13:27

ответы VBA лучше всего подходят для обработки большого объема данных, но я отмечу, что вы также можете сделать это с помощью копирования/вставки с помощью "транспонирования". Это простое решение Правой Кнопкой Мыши для небольших потребностей. Это относится и к 2010 году, я думаю, что и к 2007 году.

похоже, что я тоже не могу делать изображения..

  • копировать ячейки по вертикали
  • щелкните правой кнопкой мыши другую ячейку и используйте четвертый параметр в разделе "Параметры вставки" (выглядит как два синих прямоугольника под прямым углом)

быстрее в некоторых случаях.

0
отвечен Andy Raddatz 2023-05-07 15:44

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх