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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2009, 09:56   #1
ABCOz
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 12
По умолчанию Заполнение таблицы по условию

Здравствуйте!
Задачка наверняка типовая, но поиск не помог, а своего опыта мало.
Есть вкладка с заказом, где клиент ставит сам количество требуемых ему деталей. Это его заявка. Но в ней остаются строки со всеми атрибутами (наименованиями, номенклатурой,ценами), но с нулевой суммой, потому как количество равно 0.
На другой вкладке хочется автоматически сформировать накладную на отпуск товара, в которой не будет "нулевых" позиций.
ABCOz вне форума Ответить с цитированием
Старый 10.09.2009, 10:11   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В Excel 2003: Сервис - Параметры. В окне "Параметры окна" уберите флажок напротив "Нулевые значения".
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 10.09.2009, 10:31   #3
ABCOz
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 12
По умолчанию Этот фокус просто убирает с экрана нули

Цитата:
Сообщение от SAS888 Посмотреть сообщение
В Excel 2003: Сервис - Параметры. В окне "Параметры окна" уберите флажок напротив "Нулевые значения".

Нужно СФОРМИРОВАТЬ итоговую таблицу на вкладке "Накладная" на основе таблицы из вкладки "Заказ", с условием что в Накладную войдут только значимые строчки. Ведь в заказе лежит прайс на много позиций, а накладная - документ для отгрузки. Там должны присутствовать только отгружаемые позиции.
ABCOz вне форума Ответить с цитированием
Старый 10.09.2009, 10:37   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Никто не видел ваш файл со вкладками (которые обычно называют листами) "Накладная" и "Заказ", поэтому готового решения Вы не получите.

В общем случае можно попробовать использовать автофильтр или расширенный фильтр (меню Данные - Фильтр - Расширенный фильтр) для формирования выборки.
EducatedFool вне форума Ответить с цитированием
Старый 10.09.2009, 11:21   #5
ABCOz
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 12
По умолчанию Файлик

Навскидку накидал файлик.
В нем уже есть результат(накладная), как он быть должен. Т.е. на листе Заказ вначале была табличка с пустыми суммами, они сейяас скрыты - это результат работы расширенного фильтра, СДЕЛАННОГО РУКАМИ. В идеале, клиент ставит нужное ему к-во товара, а накладная заполняется АВТОМАТОМ.
Вложения
Тип файла: zip Образец.zip (8.9 Кб, 32 просмотров)
ABCOz вне форума Ответить с цитированием
Старый 10.09.2009, 12:03   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот Вам макрос:
Код:
Sub main()
    On Error Resume Next
    Dim shd As Worksheet: Set shd = Worksheets("Накладная")
    Dim shs As Worksheet: Set shs = Worksheets("Заказ")
    Dim ra As Range: Set ra = shs.Range(shs.[b6], shs.Range("b" & shs.Rows.Count).End(xlUp)).Offset(, 2)
    shd.Range("6:666").Clear
    ra.SpecialCells(xlCellTypeConstants).EntireRow.Copy shd.[a6]
    ra.Cells(1)(ra.Cells.Count + 1).EntireRow.Copy shd.Range("b" & shd.Rows.Count).End(xlUp).Offset(1).EntireRow
    shd.Range("e" & shd.Rows.Count).End(xlUp) = ra.Cells(1)(ra.Cells.Count + 1, 2)
    shd.Activate
End Sub
А вот - пример:


Вообще, такая задача решается без макросов.
Например, при помощи сводной таблицы.
EducatedFool вне форума Ответить с цитированием
Старый 10.09.2009, 12:10   #7
ABCOz
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 12
По умолчанию

Одно еще дополнение - а как бы еще менять название листа, если клиент выбрал лист не с проводами, а с болтами-гайками?
Т.е., как в неявном виде вместо Worksheets("Накладная") подставить имя другого листа? Скажем, введя в ячейку А1 значение "Накладная_болты", чтобы макрос брал таблицу из листа "Накладная_болты" ?
ABCOz вне форума Ответить с цитированием
Старый 10.09.2009, 12:29   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Скажем, введя в ячейку А1 значение "Накладная_болты", чтобы макрос брал таблицу из листа "Накладная_болты" ?
Введя в ячейку А1 какого листа?

Надо было сразу выкладывать файл с такими листами, и указывать эту особенность в задании.

Воссоздавать структуру вашего файла у меня нет ни малейшего желания.
Не хотите выкладывать файл - адаптируйте макрос самостоятельно.
EducatedFool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заполнение таблицы из бд Damhurz PHP 34 05.04.2013 14:38
Сумма значений таблицы условию. Drummer_SV Microsoft Office Excel 4 13.05.2009 16:24
заполнение HTML таблицы memka PHP 11 08.04.2009 17:19
заполнение таблицы Andreyka Общие вопросы Delphi 6 07.02.2009 22:18
Не получается заполнение TreeView из таблицы бд Paul Hindenburg БД в Delphi 3 10.03.2008 18:25