Всем привет. Споткнулся тут с простой задачей. Завис уже часа на три. Вобщем есть таблица исходных данных в виде 1 строки и 100500 столбцов. Нужно сделать таблицу в два столбца и 100500/2 строк. Принцип такой: первые две ячейки остаются на месте, следующая пара ячеек переезжает под них и так далее. Прикладываю свой файл. Там какой-то из последних сырых вариантов.
Всем привет. Споткнулся тут с простой задачей. Завис уже часа на три. Вобщем есть таблица исходных данных в виде 1 строки и 100500 столбцов. Нужно сделать таблицу в два столбца и 100500/2 строк. Принцип такой: первые две ячейки остаются на месте, следующая пара ячеек переезжает под них и так далее. Прикладываю свой файл. Там какой-то из последних сырых вариантов.fairylive
Sub qq() j = 2 For i = 3 To Columns(Columns.Count).End(xlToLeft).Column Step 2 Cells(j, 1).Resize(, 2).Value = Cells(1, i).Resize(, 2).Value j = j + 1 Next End Sub
[/vba]
[vba]
Код
Sub qq() j = 2 For i = 3 To Columns(Columns.Count).End(xlToLeft).Column Step 2 Cells(j, 1).Resize(, 2).Value = Cells(1, i).Resize(, 2).Value j = j + 1 Next End Sub
Sub упорядочить() For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column Step 2 n_ = Not n_ Cells(2, Int(i / 4) * 2 + 1).Offset(1 + n_).Resize(, 2) = Cells(1, i).Resize(, 2).Value Next i End Sub
[/vba]
Если добавить нужностей всяких, то [vba]
Код
Sub упорядочить() Dim n_ As Boolean Application.ScreenUpdating = 0 cal_ = Application.Calculation Application.Calculation = xlCalculationManual c1_ = Cells(1, Columns.Count).End(xlToLeft).Column For i = 1 To c1_ Step 2 n_ = Not n_ Cells(2, Int(i / 4) * 2 + 1).Offset(1 + n_).Resize(, 2) = Cells(1, i).Resize(, 2).Value Next i Application.Calculation = cal_ Application.ScreenUpdating = 1 MsgBox "Всё" End Sub
[/vba]
И такой простенький вариант [vba]
Код
Sub упорядочить() For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column Step 2 n_ = Not n_ Cells(2, Int(i / 4) * 2 + 1).Offset(1 + n_).Resize(, 2) = Cells(1, i).Resize(, 2).Value Next i End Sub
[/vba]
Если добавить нужностей всяких, то [vba]
Код
Sub упорядочить() Dim n_ As Boolean Application.ScreenUpdating = 0 cal_ = Application.Calculation Application.Calculation = xlCalculationManual c1_ = Cells(1, Columns.Count).End(xlToLeft).Column For i = 1 To c1_ Step 2 n_ = Not n_ Cells(2, Int(i / 4) * 2 + 1).Offset(1 + n_).Resize(, 2) = Cells(1, i).Resize(, 2).Value Next i Application.Calculation = cal_ Application.ScreenUpdating = 1 MsgBox "Всё" End Sub