30.05.2017, 06:42 [+3 UTC]
в нашей команде: 1 988 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
29.05.2017, 18:14

Последний вопрос:
29.05.2017, 21:26

Последний ответ:
29.05.2017, 09:18

Последняя рассылка:
29.05.2017, 18:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
03.09.2010, 10:15 »
Людмила
Спасибо! Все получилось. Контроль Anti-Leak почему-то именно на авире был отключен. [вопрос № 179832, ответ № 262957]

РАЗДЕЛ • Пакет MSOffice

Установка, настройка и работа в пакете Microsoft Office.

[администратор рассылки: Megaloman (Академик)]

Лучшие эксперты в этом разделе

Megaloman
Статус: Академик
Рейтинг: 478
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 134
Admitrienko
Статус: 5-й класс
Рейтинг: 126

Перейти к консультации №:
 

Консультация онлайн # 189879
Раздел: • Пакет MSOffice
Автор вопроса: a.panin (Посетитель)
Отправлена: 13.10.2016, 15:08
Поступило ответов: 1

Здравствуйте! У меня возникли сложности с таким вопросом:
MS Excel 2010. Есть файл заказа товаров(Лист1) с основными столбцами формата "поставщик/артикул/наименование товара/количество/цена прихода/дата прихода/номер документа".
Задача формировать автоматически сводную накладную о приходе товара на определенную дату, которая указывается в отдельной ячейке(Лист2), т.е. нужно подготовить таблицу на отдельном листе(Лист2) с позициями товара, пришедшего после определенной даты (от такого-то числа и позднее по настоящее время) формата "артикул/наименование товара/количество". Спасибо.

Состояние: Консультация закрыта

Ответ # 274151 от Megaloman (Академик)

Здравствуйте, a.panin!
Вот вариант решения: за основу взята Ваша таблица и в неё добавлен макрос.
Возможно, макрос понадобится подкорректировать: Вид-Макрос-OutForm-Изменить. Вот фрагмент кода для пояснения:

   ListIn = "Общий заказ"
    ListOut = "Лист прихода"
     
     ColIn = Array("A", "E", "F", "G", "H", "P")    'Из каких колонок берём данные
    ColOut = Array("A", "E", "F", "G", "H", "P")    ' В какие колонки помещаем
    
     RowIn1 = 7     ' C какой строки начинаем просмотр исходных данных
     ColTek = "B"   ' В какои колонке смотрим исходные даты
    RowOut1 = 3     ' В какую строку начинаем помещать найденные данные
    
    DateOut1 = "F1"  ' Клетка в ListOut с начальной датой для отбора из ListIn
    DeltaOut = -6    ' Диапазон выбора в днях от начальной даты
   

Прежде всего, Вы увидите, что заданы имена листов Вашей книги - если в книге они изменятся, поменяйте макрос.
Далее - описаны массив исходных колонок и колонок на выходе, куда Вы переносите данные. Их число должно совпадать. В Вашем частном случае имена исходных и колонок на выходе совпадают.
Далее, определите, с какой строки в таблице начинается просмотр данных. Я написал 7, как у Вас в таблице: у Вас это шапка и какие-то пустые строки
Далее всё понятно из описания, обращу внимание, что диапазон дат может отсчитываться как вперёд от заданной в шапке листа даты, так и назад (со знаком -) на указанное кол-во дней. Здесь, как Вы требовали, сделано -6.
Как пользоваться: задать на листе "Лист прихода" дату, далее Вид-Макрос-OutForm-Выполнить. При этом создастся отдельно новая книга с листом "Лист прихода", куда выберутся нужные данные. Вы вольны сохранить её с любым именем в любое место. Исходная книга при этом никак не меняется, в том числе и "Лист прихода" - он используется как шаблон, поэтому его ничем заполнять нельзя.



Консультировал: Megaloman (Академик)
Дата отправки: 14.10.2016, 14:32

-----
 Прикрепленный файл: скачать (RAR) » [553.4 кб]

5
Ого! Спасибо Вам огромное, всё работает. Отдельное спасибо за пояснения "для дураков", очень помогли.
Если честно, думал обойдусь какой-нибудь простенькой формулой.

-----
Дата оценки: 17.10.2016, 10:45

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 189879

Megaloman
Академик

ID: 137394

# 1

= общий = | 13.10.2016, 16:41 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
a.panin:

Уважаемый a.panin! Громадная просьба заархивировать пример Вашей таблицы (лист 1 и для примера хоть пару строк на лист 2) и прикрепить полученный файл к посту в минифоруме Вашего вопроса, чтобы можно было предметно обсуждать Вашу проблему. Хорошо заданный вопрос- это половина ответа. smile Не уверен, что кто-то захочет угадывать, что бы Вы хотели конкретно получить smile

=====
Нет времени на медленные танцы

• Отредактировал: Megaloman (Академик)
• Дата редактирования: 13.10.2016, 16:55

a.panin
Посетитель

ID: 400594

# 2

= общий = | 13.10.2016, 17:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Megaloman


Прошу прощения, исправляюсь.

Во вложении файл, пояснения к нему:
1. В файле два листа: Лист "Общий заказ" и лист "Лист прихода"
2. В "общем заказе" заказанные позиции, при внесении номера счета в ячейку "номер счета" автоматически окрашиваются желтым.
3. В "общем заказе" пришедшие на склад позиции при вбивании в ячейку "№ ТН" автоматически закрашиваются зеленым (для визуального упрощения понимания что пришло, а что нет), а в ячейку "Дата поступления на склад" автоматически заполняется дата заполнения № ТН в формате дд.мм.гггг чч:мм:сс
Все остальные данные заполняются вручную.

Задача:
Необходимо раз в неделю (пятница) формировать приход товара за неделю в "Листе прихода" и рассылать такой отчет менеджерам отдельным файлом. Условия формирования - сравнивать дату, указанную a шапке "листа прихода" (колонка F1, адрес неизменный) с данными в колонке "Дата поступления на склад". И всё, что пришло в эту дату и предыдущие 6 дней (календарная неделя), переносить в таблицу "листа прихода" согласно указанных там колонок (т.к. менеджерам должна быть представлена информация лишь в ограниченном виде).

-----
 Прикрепленный файл:  скачать (RAR) » [542.9 кб]

Megaloman
Академик

ID: 137394

# 3

= общий = | 13.10.2016, 20:51 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата:
подготовить таблицу на отдельном листе(Лист2) с позициями товара, пришедшего после определенной даты (от такого-то числа и позднее по настоящее время)
© Цитата:
И всё, что пришло в эту дату и предыдущие 6 дней (календарная неделя), переносить в таблицу "листа прихода"
Вам не кажется, что Вы противоречите сами себе?
В общем заказе не вижу ед. измерения, а в листе прихода она есть
Всем менеджерам рассылаются одинаковые таблицы или они фильтруются по какому-то полю?

=====
Нет времени на медленные танцы

• Отредактировал: Megaloman (Академик)
• Дата редактирования: 14.10.2016, 08:40

a.panin
Посетитель

ID: 400594

# 4

= общий = | 14.10.2016, 09:02 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

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

• Отредактировал: a.panin (Посетитель)
• Дата редактирования: 14.10.2016, 09:07

Megaloman
Академик

ID: 137394

# 5

= общий = | 17.10.2016, 17:31 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата:
думал обойдусь какой-нибудь простенькой формулой
Можно и формулой: перенести все данные (включая данные и из незаполненных строк) формулой на соседний лист, при этом колонка с датой должна обязательно присутствовать и должна отображаться. Далее, на колонку с датой ставим фильтр. Далее делаем фильтр по дате - "между" и отбираем нужные данные. После этого печатаем этот лист, выбрав принтер Microsoft XPS Document Writer, который устанавливается при установке MS Office 2010, который спросит у Вас имя XPS-файла, в который сохранится изображение документа. Это некое подобие PDF файла, и его радость в том, что изменить его нельзя, что для рассылки информационного документа может оказаться очень полезным.
Недостаток этого решения: "полосатость" Вашей таблицы на выходе не будет соблюдена.
Прикрепляю файл с примером, где на "Лист прихода (2)" реализована эта идея.
При этом кол-во строк с формулами на листе должно быть не менее заполненных строк в исходном листе.
У меня в примере 2562 строки.
Фильтр надо организовывать после того, как сформированы строки с формулами.
В примере я поубивал все лишние столбцы, чтобы таблица отрабатывала быстрее.
Похоже, в этом способе чуть больше ручной возни - надо фильтр указывать.
Кстати, и в предыдущем решении с макросом "Лист прихода" должен содержать достаточное число нормально отформатированных строк. И, кстати, тоже можно рассылать не xlsm-файл, а XPS. Просмотрщики XPS-файлов есть и для Windows, и для Android, так что можно рассылать его куда угодно.

=====
Нет времени на медленные танцы

-----
 Прикрепленный файл:  скачать (RAR) » [686.5 кб]

a.panin
Посетитель

ID: 400594

# 6

= общий = | 18.10.2016, 09:13 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Megaloman
Можно и формулой:


Спасибо, приму к сведению. Но первый способ действительно более изящный, мне он в полной мере подходит. Еще раз спасибо!

a.panin
Посетитель

ID: 400594

# 7

= общий = | 20.10.2016, 11:10 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Megaloman
Вот вариант решения: за основу взята Ваша таблица и в неё добавлен макрос.


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

Megaloman
Академик

ID: 137394

# 8

= общий = | 20.10.2016, 15:26 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
a.panin:

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

© Цитата:
Сразу оговорюсь, в коде указан был не тот столбец для отслеживания даты, нужен был "R" - исправил
Воспринял с чувством глубокого удовлетворения - значит код сделал достаточно легко настраиваемым.

=====
Нет времени на медленные танцы

a.panin
Посетитель

ID: 400594

# 9

= общий = | 20.10.2016, 15:39 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Megaloman
Можно. А какой столбец обязательно должен быть заполнен, надо ведь как-то ловить конец данных, или, хотя бы, ограничить число пустых ячеек, после которого можно считать, что данные кончились.


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

Megaloman
Академик

ID: 137394

# 10

= общий = | 20.10.2016, 21:26 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
a.panin:

Вот обещанное. В таблице возможны пустые строки (точнее, пустые клетки вподряд в столбце с обязательными данными), но не более заданного ограничения.

=====
Нет времени на медленные танцы

-----
 Прикрепленный файл:  скачать (RAR) » [274.7 кб]

a.panin
Посетитель

ID: 400594

# 11

= общий = | 21.10.2016, 15:53 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Megaloman
Вот обещанное. В таблице возможны пустые строки (точнее, пустые клетки вподряд в столбце с обязательными данными), но не более заданного ограничения.


Спасибо ОГРОМНОЕ!!! Всё работает, уже перенес в основной файл заказа. Вы мне помогли сэкономить рабочее время. :)

 

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

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.19034 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн