Страницы: 1 2 След.
RSS
Создание отчетных бланков из одной таблицы по условию
 
Добрый день!  
Помогите, пожалуйста, самоучке-любителю Excel. Очень нравиться работа с таблицами и формулами, но вот не догадаться: как создать заполненные бланки (свой на каждое изделие) с одного документа по условию одной ячейки. С макросами никогда не работала и пока не знаю как. Хочу завязать всё через формулы.  
Есть таблица, данные в которой постоянно меняются (добавляются и убираются позиции; меняется кол-во). По этой таблице я через формулы создала бланки к каждой позиции на 2-ом листе. Но проблема в том, что туда выводятся и бланки с количеством изделий = 0. Умом я понимаю, что нужно создать условие, при котором каждая ячейка будет > или = 0. Если >0, то копировать бланк с данными на следующий лист, если=0, то нет. Но как это реализовать - не знаю. Хочу вывести бланки с кол-вом > 0 на 3-й лист для печати.    
Иначе приходить набивать всё ручками или выбирать бланки с кол-ом > 0.  
Заранее, благодарю!!!
 
Добрый.  
Попробуйте сначала тут посмотреть:    
http://www.planetaexcel.ru/tip.php?aid=99  
И попытайтесь приспособить под свой случай.
Кому решение нужно - тот пример и рисует.
 
Спасибо! Посмотрела!  
Мне это не подходит. Вернее сказать добавляется ручная работа (ставить"Х" напротив не 0 ячеек. Будет правильнее и быстрее (чтобы не исправлять другие данные), из готовых бланков скопировать на другой лист те бланки, значения кол-ва изделий в которых > 0 для печати. Как это реализовать?
 
Не видя данных не определить что надо копировать и куда.  
Не видя примера(вот как есть, вот как надо чтоб было) - как вам подсказывать?  
Можно, конечно, уповать на мой третий глаз, но лучше почитать правила форума и приложить сформированный в соответствии с ними файл-пример.
Кому решение нужно - тот пример и рисует.
 
Вкладываю файл, надеюсь пройдёт.  
В 3-ий лист "бланки для печати" должны копироваться только те бланки, в которых количество штук в упаковке > 0. Для печати.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>{/post}{/quote}  
Попробую урезать....
 
Ещё раз взываю к помощи. Пожалуйста, поясните новичку, как с помощью формул вывести данные из таблицы в бланк. Опираясь на кол-во (помечено жёлтым) нужно заполнить бланки  для печати. То что предложили выше не подходит.    
Пример во вложении.
 
Не понимаю... задачу в целом.  
Покажите заполненный бланк.  
 
Возможно, Вам нужно просто скрыть ненужные строки?
 
Добавьте столбец А:  
=ЕСЛИ(где-то_не_ноль;МАКС($A$5:A5)+1)  
Данные столбца используйте для подтягивания в бланки.
 
Высылаю часть - всё не вставить - много весит.    
Лист Маркировка и таблица связаны у меня формулами и при её заполнении - автоматически заполняются бланки. Мне необходимо, чтобы на 3-ий лист формировались бланки, в которых кол-во изделия >0, для печати. А мне это не реализовать в формулах(с макросами не работала - надо изучать)
 
{quote}{login=Hugo}{date=12.12.2011 01:08}{thema=}{post}Не понимаю... задачу в целом.  
Покажите заполненный бланк.  
 
Возможно, Вам нужно просто скрыть ненужные строки?{/post}{/quote}  
Высылаю часть - всё не вставить - много весит.  
Лист Маркировка и таблица связаны у меня формулами и при её заполнении - автоматически заполняются бланки. Мне необходимо, чтобы на 3-ий лист формировались бланки, в которых кол-во изделия >0, для печати. А мне это не реализовать в формулах(с макросами не работала - надо изучать)  
 
 
К сообщению прикреплен файл: post_287438.rar
 
Фиалка, смотрел Ваши примеры. К сожалению не смог понять что надо... Попробуйте еще раз показать что хочется получить в итоге. где смотреть это Ваше количество не равное нулю, и что ожидаем увидеть в конце. И еще, почему не устраивает печать данных сразу? Зачем их (бланки) множить на каком то еще листе?
 
{quote}{login=Igor67}{date=14.12.2011 12:09}{thema=}{post}Фиалка, смотрел Ваши примеры. К сожалению не смог понять что надо... Попробуйте еще раз показать что хочется получить в итоге. где смотреть это Ваше количество не равное нулю, и что ожидаем увидеть в конце. И еще, почему не устраивает печать данных сразу? Зачем их (бланки) множить на каком то еще листе?{/post}{/quote}  
Пометила цветом связанные данными ячейки.  
Всё что необходимо получить описала по месту в файле на листе МАРКИРОВКА.
 
{quote}{login=Фиалка}{date=14.12.2011 02:50}{thema=Re: }{post}{quote}{login=Igor67}{date=14.12.2011 12:09}{thema=}{post}Фиалка, смотрел Ваши примеры. К сожалению не смог понять что надо... Попробуйте еще раз показать что хочется получить в итоге. где смотреть это Ваше количество не равное нулю, и что ожидаем увидеть в конце. И еще, почему не устраивает печать данных сразу? Зачем их (бланки) множить на каком то еще листе?{/post}{/quote}  
Пометила цветом связанные данными ячейки.  
Всё что необходимо получить описала по месту в файле на листе МАРКИРОВКА.{/post}{/quote}  
Извините!!! Вложила не тот файл.  
Помогите.....пожалуйста....
 
{quote}{login=Фиалка}{date=09.12.2011 11:31}{thema=Создание отчетных бланков  из одной таблицы по условию}{post}... как создать заполненные бланки (свой на каждое изделие) с одного документа по условию одной ячейки...{/post}{/quote}  
Вариант - слияние данных Excel'я с формой бланка в Wоrd'е. Отбирать данные можно по фильтру при слиянии... Смотрите слияние писем, изготовление наклеек...  
Упрощенный вариант - http://www.planetaexcel.ru/tip.php?aid=203 ...  
-22558-
 
Может быть всё же не копировать на другой лист, а скрыть ненужное на этом?  
Только сперва поменяйте в свойствах всех картинок с зонтиками/бокалами, чтоб они скрывались вместе с строками, потом выполните из модуля на активном листе "Маркировка"код:  
 
Sub СкрытьНенужное()  
   Dim cc As Range  
   UsedRange.EntireRow.Hidden = False  
   For Each cc In UsedRange.Columns(1).Cells  
       If cc.Value = "Количество мест:" Then  
           If cc.Offset(, 1).Value = 0 Then cc.CurrentRegion.EntireRow.Hidden = True  
       End If  
   Next  
End Sub  
 
 
Можно доработать, чтоб не нужно было сперва лист активировать.
 
Вернее удобнее так - это в модуль листа "Маркировка" и другого кода не нужно:  
 
Private Sub Worksheet_Activate()  
   Dim cc As Range  
   Application.ScreenUpdating = False  
   UsedRange.EntireRow.Hidden = False  
   For Each cc In UsedRange.Columns(1).Cells  
       If cc.Value = "Количество мест:" Then  
           If cc.Offset(, 1).Value = 0 Then cc.CurrentRegion.EntireRow.Hidden = True  
       End If  
   Next  
   Application.ScreenUpdating = True  
End Sub
 
{quote}{login=Hugo}{date=14.12.2011 03:45}{thema=}{post}Может быть всё же не копировать на другой лист, а скрыть ненужное на этом?  
Только сперва поменяйте в свойствах всех картинок с зонтиками/бокалами, чтоб они скрывались вместе с строками, потом выполните из модуля на активном листе "Маркировка"код:  
 
Sub СкрытьНенужное()  
   Dim cc As Range  
   UsedRange.EntireRow.Hidden = False  
   For Each cc In UsedRange.Columns(1).Cells  
       If cc.Value = "Количество мест:" Then  
           If cc.Offset(, 1).Value = 0 Then cc.CurrentRegion.EntireRow.Hidden = True  
       End If  
   Next  
End Sub  
 
 
Можно доработать, чтоб не нужно было сперва лист активировать.{/post}{/quote}  
 
Извините, я работала только с формулами. А как работать с макросами даже не представляю. Иначе бы давно решила эту задачу, т.к. макросы для этого случая у меня есть(на всякий случай - вдруг научусь ими пользоваться)
 
Имеено этот код добавить легко - ПКМ на ярлыке листа "Маркировка", выбрать "исходный текст" и вставить в открывшийся модуль листа приведённый код. Книгу сохранить. Макросы разрешить.  
Теперь при переходе на лист будут видны только заполненные бланки.  
Чтоб увидеть все - нужно или выделить все строки и их UnHide (показать), или всем на первом листе поставить временно количество >0.
 
{quote}{login=Hugo}{date=14.12.2011 05:20}{thema=}{post}Имеено этот код добавить легко - ПКМ на ярлыке листа "Маркировка", выбрать "исходный текст" и вставить в открывшийся модуль листа приведённый код. Книгу сохранить. Макросы разрешить.  
Теперь при переходе на лист будут видны только заполненные бланки.  
Чтоб увидеть все - нужно или выделить все строки и их UnHide (показать), или всем на первом листе поставить временно количество >0.{/post}{/quote}  
Спасибо вам огромное!!!!  
Последнее время очень редко встречаются люди, которые делятся знаниями. Я делюсь со всеми, но безответно.  
А таких людей, как вы глубоко УВАЖАЮ!!!  
Теперь передо мной стоит задача перенести на 3 лист бланки для печати, так как изделия, в которых стоит формула в кол-ве упаковок не должна быть > 1 и мне необходимо создать бланков одноимённых изделий такое кол-во, которое стоит в КОЛ-ВО УПАКОВОК.  
Спасибо, если подскажете как?
 
Как-то опять непонятно...  
Не нашёл в форме "КОЛ-ВО УПАКОВОК".  
Есть  
Кол-во шт. в упаковке  
и  
Количество мест:  
Вы расскажите, что в итоге нужно получить?  
Может быть сделать всё иначе - макросом подставляем в одну единственную форму данные из первого листа, её печатаем, подставляем следующие данные, печатаем и т.д.  
Без формул. На втором листе (можно его скрыть) держим одну форму чистого бланка, который используем для заполнения.  
Можно не печатать, а копировать столбиком на другой лист - если нет задачи сразу распечатывать.  
Думаю, так будет проще реализовать всю эту сложную логику.  
Только опишите её ещё раз подробно.  
 
Ещё непонятно: в столбце "Название изделия" у Вас то ссылка на ='образец спец. отгрузки'!M4, то на ='образец спец. отгрузки'!D5 - проясните эту логику.
 
{quote}{login=Hugo}{date=15.12.2011 10:25}{thema=}{post}Как-то опять непонятно...  
Не нашёл в форме "КОЛ-ВО УПАКОВОК".  
Есть  
Кол-во шт. в упаковке  
и  
Количество мест:  
Вы расскажите, что в итоге нужно получить?  
Может быть сделать всё иначе - макросом подставляем в одну единственную форму данные из первого листа, её печатаем, подставляем следующие данные, печатаем и т.д.  
Без формул. На втором листе (можно его скрыть) держим одну форму чистого бланка, который используем для заполнения.  
Можно не печатать, а копировать столбиком на другой лист - если нет задачи сразу распечатывать.  
Думаю, так будет проще реализовать всю эту сложную логику.  
Только опишите её ещё раз подробно.  
 
Ещё непонятно: в столбце "Название изделия" у Вас то ссылка на ='образец спец. отгрузки'!M4, то на ='образец спец. отгрузки'!D5 - проясните эту логику.{/post}{/quote}  
Поясняю:  
1. Все ячейки помеченные одним цветом в обоих листах-одно и то же, только называются по-разному.  
2. Бланки составляются на разные изделия, по-этому ссылки на названия разные.  
3. Образец того, что должно получиться на Листе 3 - пример набит ручками.
 
Эту программу не пробовали?  
http://excelvba.ru/programmes/Labels
 
Предлагаю такой вариант - в приложенном файле-инструменте следующий код.  
 
Option Explicit  
 
Sub GenerateForms()  
   Dim frm As Range, cc As Range, i&, cnt&, sh1 As Worksheet, sh2 As Worksheet, wbs As Worksheet, sdvig&  
   Set sh1 = ActiveWorkbook.Sheets("образец спец. отгрузки")  
   Set sh2 = ActiveWorkbook.Sheets("Маркировка")  
   Set wbs = Workbooks.Add(1).Sheets(1)  
   sdvig = 1  
   Application.ScreenUpdating = False  
     
   With sh2  
       Set frm = .Range("A1:M28")  
       For Each cc In sh1.[E4:E36].Cells
           If IsNumeric(cc.Value) Then  
               If cc.Value > 0 Then  
                   For i = 1 To cc.Value  
                       cnt = cnt + 1  
                       .[g3] = sh1.[f1]
                       .[i3] = sh1.[k1]
                       .[c7] = IIf(Len(cc.Offset(, -1)), cc.Offset(, -1), cc.Offset(, 8))
                       .[l7] = 1
                       .[c16] = 1
                       .[f16] = cnt
                       .[i16] = cc.Offset(, 1)
                       .[k16] = cc.Offset(, 3)
                       .[m16] = cc.Offset(, 5)
                    frm.Copy wbs.Cells(sdvig, 1)  
                    sdvig = sdvig + frm.Rows.Count + 1  
                   Next  
               End If  
           End If  
       Next  
   End With  
   Application.ScreenUpdating = True  
End Sub  
 
Можно его скопировать в модуль Вашего файла, а можно сделать иначе - открыть этот инструмент, затем активировать Ваш файл  с таблицей, нажать комбинацию Alt+F8 и из списка доступных макросов выбрать код GenerateForms и его выполнить.  
Формы будут выгружены в новую книгу - думаю так удобнее, т.к. не нужно преварительно ничего очищать. Потом её можете сохранить как угодно (ну или можно сохранение дописать в код) или распечатать и закрыть без сохранения.  
Но можно переделать и на копирование в третий лист.  
В листе "Маркировка" нужна только одна чистая первая форма - с заполненными постоянными значениями. Но и их можно заносить кодом - думаю там всё понятно.
 
Можно чистый бланк хранить в файле с макросом - тогда файл с данными может быть вообще с одним листом.  
Например, если его Вам присылают другие люди, то Вам не надо ничего с ним больше делать -  Вы открываете инструмент, открываете присланные данные, выполняете макрос - формы готовы.  
Ну а если код удобнее держать в файле с данными и чистым бланком - можно в редакторе VBA перетянуть модуль с кодом из одного файла в другой.  
Далее запускать его по Alt+F8, или задать сочетание клавиш, или добавить на лист (или в меню) кнопку для запуска макроса.
 
{quote}{login=Hugo}{date=15.12.2011 02:06}{thema=}{post}Можно чистый бланк хранить в файле с макросом - тогда файл с данными может быть вообще с одним листом.  
Например, если его Вам присылают другие люди, то Вам не надо ничего с ним больше делать -  Вы открываете инструмент, открываете присланные данные, выполняете макрос - формы готовы.  
Ну а если код удобнее держать в файле с данными и чистым бланком - можно в редакторе VBA перетянуть модуль с кодом из одного файла в другой.  
Далее запускать его по Alt+F8, или задать сочетание клавиш, или добавить на лист (или в меню) кнопку для запуска макроса.{/post}{/quote}  
 
Доброе утро, Hugo!  
Билась я, билась....и ничего у меня не получилось.  
Тот макрос, что я загрузила не работает. То ли неправильно загрузила, то ли он не корректно работает, т.к даже Артикулы не копирует. При загрузке основной таблицы ничего не меняется.  
В общем, я застряла.
 
Ребята! Ау!  
Помогите пожалуйста!
 
Я уже детали позабыл, но всё получается - открыл файл post_288634.xls, затем файл Автоматическое заполнение маркировки урезанная.xls (Из Вашего архива), затем по Alt+F8 выполнил макрос GenerateForms (все файлы взял с форума только что).  
Результат в новом файле.
 
А, да - артикулы не копирует. Я их вероятно просто не заметил - на тёмном файле тонким шрифтом... Сейчас гляну...
 
{quote}{login=Фиалка}{date=19.12.2011 11:51}{thema=}{post}Ребята! Ау!  
Помогите пожалуйста!{/post}{/quote}  
15.12.2011, 13:31  
Эту программу не пробовали?  
http://excelvba.ru/programmes/Labels
Страницы: 1 2 След.
Читают тему
Наверх