Мне нужно сохранить порядок данных. Поэтому, чтобы объяснить, мне нужно переместить данные из ячейки
a1 до b1,
a2 до c1,
a3 до d1,
a4 до e1,
a5 до f1,
a6 до g1,
a7 до h1,
a8 до i1,
a9 в B2
a10 в C2
a11 в D2
a12 в E2
a13 в F2
a14 в G2
a15 в H2
a16 в I2
Промыть и повторить, пока не пройдут все 24000 записей в столбце A.
Конечно, есть простой способ сделать это через макрос или vba? Может быть, функция в последних версиях уже может это делать?
решение1
Вот решение 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
Вот решение. Оно предполагает следующее:
- Все исходные данные находятся в столбце A.
- Столбец B содержит только индекс строки.
Формула: =INDIRECT(CONCATENATE("a",$B2*8 + col_offset))
где col_offset — номер столбца (индексированный с нуля). Таким образом, в первом столбце это будет , =INDIRECT(CONCATENATE("a",$B2*8))
а в 8-м столбце это будет =INDIRECT(CONCATENATE("a",$B2*8+7))
.
Картинка для большей ясности:
Редактировать:Новая формула: =INDIRECT(CONCATENATE("a",(ROW()-2)*8+(COLUMN()-3)))
где -2
и -3
— смещения строк и столбцов. Просто вставьте это во все ячейки, где вы хотите, чтобы отображались ваши данные. (это решение лучше, потому что столбец B теперь можно удалить)
решение3
Ответы VBA лучше всего подходят для обработки большого объема данных, но я укажу, что вы также можете сделать это с помощью копирования/вставки с помощью "Транспонирования". Это простое решение правой кнопкой мыши для небольших нужд. Это применимо к 2010 году, и я думаю, что к 2007 году тоже.
Похоже, я пока тоже не умею делать изображения.
- Скопируйте ячейки вертикально
- Щелкните правой кнопкой мыши по другой ячейке и используйте четвертый параметр в разделе «Параметры вставки» (выглядит как два синих прямоугольника под прямым углом).
В некоторых случаях быстрее.