Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2013, 13:36   #1
Ekstra
Пользователь
 
Регистрация: 24.04.2013
Сообщений: 18
По умолчанию Печать динамической таблицы

Есть динамическая таблица из сегментов с разным количеством строк, из этих сегментов надо вытащить информацию для заполнения форм для печати. Подробнее в файле. Как одолеть эту проблему понятия не имею. Вся надежда на Вас гуру экселя.
Ekstra вне форума Ответить с цитированием
Старый 11.09.2013, 13:41   #2
Ekstra
Пользователь
 
Регистрация: 24.04.2013
Сообщений: 18
По умолчанию

Файл не прикрепился, теперь прикрепил извините новичка
Вложения
Тип файла: rar Tablica.rar (4.4 Кб, 6 просмотров)
Ekstra вне форума Ответить с цитированием
Старый 12.09.2013, 09:14   #3
Ekstra
Пользователь
 
Регистрация: 24.04.2013
Сообщений: 18
По умолчанию

Видно такая задача большой гемор, подскажите хотя бы грядку где копать
Ekstra вне форума Ответить с цитированием
Старый 12.09.2013, 09:24   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Задача-то не сказать чтобы сложная была, но... данные у вас так организованы, что без макроса тут, похоже, не обойтись.

Не совсем понятно, что делать с формами на листах 2 и 3
Просто подставить данные в соответствующие ячейки (независимо от того, что там было до этого)?
Копировать формы (из 55 строк) не надо (перед вставкой данных)?
EducatedFool вне форума Ответить с цитированием
Старый 12.09.2013, 09:35   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот что получилось: (только для формы на листе 2, т.к. для листа 3 - непонятно, где должен находиться следующий заполненный блок)

Код:
Sub Макрос()
    On Error Resume Next
    Dim cell As Range
    For Each cell In Range(Range("a5"), Range("a" & Rows.Count).End(xlUp)).Cells
        If cell.MergeArea.Cells(1).Address = cell.Address Then
            Select Case cell.EntireRow.Cells(11)
                
                Case "Годен"
                    n1& = n1& + 1    ' номер очередной формы на листе
                    BlockHeight& = 55    ' высота формы (количество строк)
                    With Worksheets("List2")
                        .Cells((n1& - 1) * BlockHeight& + 8, 3) = Cells(1, 3)
                        .Cells((n1& - 1) * BlockHeight& + 11, 2) = Cells(2, 3)

                        .Cells((n1& - 1) * BlockHeight& + 15, 2) = cell & cell.EntireRow.Cells(3)
                        .Cells((n1& - 1) * BlockHeight& + 21, 2) = cell.EntireRow.Cells(9)
                        .Cells((n1& - 1) * BlockHeight& + 28, 2) = cell.EntireRow.Cells(14)
                    End With
                
                Case "Брак"
                    ' делаем по аналогии ...
                
                Case Else
                    ' такие блоки не обрабатываем
            End Select
        End If
    Next cell
End Sub
Пример в прикреплённом файле


PS: в прикреплённом файле, замените строку
.Cells((n1& - 1) * BlockHeight& + 15, 2) = cell & .EntireRow.Cells(3)
на
.Cells((n1& - 1) * BlockHeight& + 15, 2) = cell & cell.EntireRow.Cells(3)
Вложения
Тип файла: rar Tablica.rar (14.8 Кб, 3 просмотров)

Последний раз редактировалось EducatedFool; 12.09.2013 в 09:40.
EducatedFool вне форума Ответить с цитированием
Старый 12.09.2013, 10:06   #6
Ekstra
Пользователь
 
Регистрация: 24.04.2013
Сообщений: 18
По умолчанию

Спасибо Игорь за помощь. С макросами не очень дружу. Вы написали макрос для таблицы что у меня в примере, но таблица будет продолжаться дольше я пробывал продолжать данные не захватывает. На листе 3 следующий заполненный блок должен находиться на другой странице по аналогии с листом 2. Подскажите пожалуйста где надо подправить чтобы заработало. Еще раз спасибо большое.
Ekstra вне форума Ответить с цитированием
Старый 12.09.2013, 10:14   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Вы написали макрос для таблицы что у меня в примере, но таблица будет продолжаться дольше я пробывал продолжать данные не захватывает.
Если структура данных на первом листе будет та же, - всё будет работать для листа 2, независимо от количества строк.
(количество строк влияет только на время работы макроса)

Надо выкладывать реальный файл, - чтобы потом переделывать не приходилось...
EducatedFool вне форума Ответить с цитированием
Старый 12.09.2013, 11:26   #8
Ekstra
Пользователь
 
Регистрация: 24.04.2013
Сообщений: 18
По умолчанию

Извиняюсь работает, спасибо огромное Игорь, буду пробовать заточить под реальный файл в котором сам черт ногу сломает.
Ekstra вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать таблицы в C# Lazio Фриланс 2 28.11.2012 02:35
Печать таблицы LightLife Общие вопросы Delphi 2 04.05.2011 15:26
Организация динамической таблицы Kerguru Microsoft Office Access 2 02.12.2009 11:35
Печать таблицы БД annaaaron БД в Delphi 2 12.08.2009 12:08
печать таблицы! frodo Общие вопросы Delphi 4 10.04.2008 19:52