Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Разбиение данных из сплошного столбца группами по строкам

Автор Toha153, 08.09.2013, 22:22

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

Toha153

Добрый вечер! Нужна помощь в переформировании сплошного списка в отдельные по условию - каждое новое слово "получено" (для примера, можно "отдано", не играет роли для цели) задает начало отдельной новой колонке. В списке число заполненных строк меняется, поэтому сделать фиксированные столбцы не получится, придется каждый раз перетягивать все формулами вручную, а это потянет за собой изменение вообще всех расчетных процессов, эти диапазоны участвуют у меня в расчетах на многих листах. Как понимаю тут формулы массива помогут. Было бы здорово решить эту задачу.
Подскажите, пожалуйста, как ее решить?

kuklp

Public Sub www()
    Dim r As Range, a As Range, j&
    j = 6
    Set r = Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(2, 1)
    For Each a In r.Areas
        a.Resize(, 3).Copy Cells(5, j): j = j + 4
    Next
End Sub
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

iron priest


Toha153

Отличные решения и макросом , и формулами. Но все дело в том, что эти диапазоны - это расчеты формулами - и они ссылаются на расчеты (могут возвращать и текст) и на них ссылаются другие расчеты на разных листах. Но только заголовки не имеют формулы. Так же допускается посторонний текст помимо заголовков. Поэтому, как мне кажется, единственный выход - это использовать кодовые слова из заголовков, которые пропечатанны вручную и повторяются с началом каждого столбца (например "отдано"). Вот в чем проблема. Наверное, это моя ошибка в формулированнии задачи.

Вариант с формулами работает. Но проблема в том, что это не мой уровень... На первый взгляд как-то все сложно для моего понимания. Но я все же буду пытаться понять как это сделано, возможно макросом будет еще сложнее.

Но попробую описать точней алгоритм с точки зрения работы кода макроса (извините, если по дилетантски):
1. идем вниз по списку (с ячейки, например В1) 
2. встретили слово "отдано", запомнили позицию (В4)
3. считаем число строк до а) следующего слова "получено" б) до окночания списка (условие- к примеру если две пройденные ячейки в колонке пустые, дальше считать нет смысла)
4. переносим весь этот диапазон с расчетами размером в "х" колонок и просчитанным числом строк "у" (3 колонки и 19 строк- от А5 до С23 на примере вложеной таблицы). Т.е. все, что находится в том диапазоне переносится так как есть в нем, без изменения.
5. идем далее вниз, повторяем процесс по условию и так до конца списка. Если список окончен (по условию) то это последний перенос и конец.


zs

Toha153 в исходных данных строка 32 изменяет дальнейший алгоритм их постпроения-это неточность или так могут быть построены исходные данные

Toha153

Цитата: zs от 09.09.2013, 19:38
Toha153 в исходных данных строка 32 изменяет дальнейший алгоритм их постпроения-это неточность или так могут быть построены исходные данные
Возможно Вы имеете ввиду строку 35, где отсутствуют данные? Да, такое допустимо. Так же, допустимы дополнительные слова. В строке 32 не заметил ничего отличающегося от остальных. Единственное, что постоянно и неизменно - пропечатанные заголовки получено, отдано... По этой причине и посчитал, что это единственное, на что можно делать расчет, разбивая по столбцам.

zs

Toha153, предлагаю векторный вариант решения задачи. С уважением,ZS.
P.S. Исходные данные определяют решение задачи, тем понятнее исходные данные, чем легче решение задачи. (Первый столбец очень напоминает № п.п.)

Toha153

Спасибо огромное Вам и всем! Приведенные выше два варианта с формулами конечно не моего уровня, но они делают, то, что надо и тем они ценнее для меня. Взял их на вооружение. Думаю, что результат формулами не будет хуже, чем макросом. Хотя... Можно предположить, что работа формул при большом объеме информации загружает проц. больше, чем разовая разбивка макросом...

iron priest

Цитата: Toha153 от 10.09.2013, 21:56
Можно предположить, что работа формул при большом объеме информации загружает проц. больше, чем разовая разбивка макросом...

это естественно