Новости:

Подпишитесь на рассылку новых сообщений форума через службу рассылок: Subscribe.ru

Главное меню

Распределить столбец по нескольким

Автор Андрей Попов, 28.12.2015, 20:40

« назад - далее »

Андрей Попов

Есть довольно длинный столбец(10000 ячеек) с произвольными данными в ячейках. Как его распределить по нужному количеству столбцов, ячейки которых содержали бы данные из ячеек исходного столбца с номерами кратными числу столбцов? М.б. непонятно выразился - поясню примером:

Например ячейки в трёх столбцах содержат данные из столбца A: В1=A1, B2=A4, B3=A7 и т.д.; С1=А2, С2=А5, С3=А8 и т.д.; D1=A3, D2=A6, D3=A7.
В четырёх: В1=A1, B2=A5, B3=A9 и т.д.; С1=А2, С2=А6, С3=А10 и т.д.; D1=A3, D2=А7, D3=A11 и т.д.; E1=A4, E2=A8, E3=A12 и т.д.
И так далее...

Cocos1

#1
Насколько я понял, стоит задача перевести столбец в строки с периодичностью, равной количеству столбцов с результатами.
Так, сколько должно быть столбцов с результатами, 3 или 4. Или нужно решение в общем виде?
Столбец A будет добавляться, или это разовая задача?
Приложите файл с частью столбца. На нём Вам покажут результаты.
Как вариант
A1=B1
A2=C2
A3=D3
A4=B4
A5=C5
A6=D6
...
Потом удалить пустые ячейки

Андрей Попов

#2
Например такой: разбивка исходного столбца А на 7 столбцов.
Общее решение нужно. Столбцов может быть совершенно произвольное количество - от 2-х до 200 ???

Инфа в исходных столбцах для разных разбивок разная и совершенно произвольная (могут быть буквы с цифрами, например: ВВВ45628900 и т.п.)

iron priest

и как узнать на сколько столбцов нужно разбить? на 7 или на 15?


=СМЕЩ($A$1;(СТРОКА()-1)*7+СТОЛБЕЦ()-2;;;)

vikttur

СМЕЩ пересчитывается при любом изменении на листе.
=ИНДЕКС($A$1:$A$100;(ОСТАТ(СТОЛБЕЦ(A1)-1;7)+1)+(СТРОКА(A1)-1)*7)
7- заменить на нужное количнство столбцов.

cheshiki1

Sub vvv()
Dim n%, ar(), ar1(), m%, i%, j%, ii%
Range("B1").Resize(200, 200).Clear
ar = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Value
On Error Resume Next
n = InputBox("Введите количество столбцов")
If n = "" Then Exit Sub
On Error GoTo 0
m = UBound(ar) / n
ReDim ar1(1 To m, 1 To n)
For i = 1 To m
   For j = 1 To n
   ii = ii + 1
     If ii > UBound(ar) Then
      Exit For
     Else
      ar1(i, j) = ar(ii, 1)
     End If
   Next
Next
Cells(1, 2).Resize(m, n) = ar1
End Sub

vikttur


zs

С наступающим Новым годом!