|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.08.2013, 15:14 | #1 |
Форумчанин
Регистрация: 04.12.2011
Сообщений: 148
|
Сортировка по шаблону по 2 критэриям
Добрый день... (данный код был и ранее у меня, но потерял) Похожая тема уже естьhttp://www.programmersforum.ru/showthread.php?t=242257, что очень помогло для еженедельного отчета... Но меня попросили разобрать 2-й квартал по новой, т.к. сотрудники не могут получить премию, т.к. бывший директор завышал планы и планы не выполнены и соответственно премии нет... По общим продажам агентам выполнили... По этому попросили разобрать по агентам... Текущий отчет меня вполне устраивает, если делать еженедельно, но восстановить 3 месяца еженедельных продаж при том, что 40 агентов для меня неподъемная планка(не сплю уже 2 ночи, а выполнил только 10%)... Кто поможет Спасибо от всех сотрудников нашей фирмы...
Задача 1. Существует лист "шаблон" с кодом товара и товар 2. Существует "выгруженный отчет" лист 2 из программы Код товара / Товар / Агент / Кол-во/ Сумма/ 3. В Листе "Нужный результат" нужно строки отсортировать код товара и товар по листу как в шаблоне, и по Агентам в столбец... В случае если товара нет в шаблоне, вынести ниже как в примере отдельно... Кто откликнется респектище... При небольшой зарплате символически кину на счет денежек.. Т.к. ту помощь которую получаю от вас стоит очень больших денег... Спс от меня лично и сотрудников... |
23.08.2013, 16:26 | #2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Алгоритм если делать на словаре/рях. Простой.
1. я думаю, из шаблона строки впоне можно скопировать в "результат", и КОД товара, и Товар. Да и вообще эта таблица уже как данность. Если нет - то сперва изготавливаем её, вручную или кодом, на основе шаблона и отчёта. Кстати, значения по присутствующим несложно подтянуть формулами, например с помощью суммпроизв(). Отсутствующие коды выявить любой другой формулой, закопипастить их вниз, и снова суммпроизв(). Но если всёж не формулами - 2. цикл по отчёту, заносим в один словарь ключ КОД товара & Товары & Агенты и кол-во в item, в другой аналогично сумму. 3. цикл в цикле по "результату", составляем ключ из "шапок", по ключу находим в словарях данные, заполняем таблицу. 4. в процессе заполнения у найденных в словаре ставим метки в item (да хоть слово "ЕСТЬ!"), затем цикл по словарю и всех без меток аналогично раскидываем по таблице. Всё. Вот тут я делал ровно наоборот (но общий алгоритм от этого не меняется ): http://www.planetaexcel.ru/forum/ind...35&result=edit
webmoney: E265281470651 Z422237915069 R418926282008
|
23.08.2013, 17:09 | #3 |
Форумчанин
Регистрация: 04.12.2011
Сообщений: 148
|
Хуго121 я вывел схему, но в реальности у меня 40 агентов 8 филиалов, и нужда именно в вба коде, каждую неделю в течении 3 месяцев... Я хочу исключить формулы... тк разделю объем работы между сотрудниками, а они с формулами не дружат... А нажать макрос я из научу
|
23.08.2013, 17:10 | #4 |
Форумчанин
Регистрация: 04.12.2011
Сообщений: 148
|
Проф. Дышиглубжиев ошибся сайтом...
|
23.08.2013, 17:22 | #5 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Вечером или на выходных могу написать. Сейчас занят.
webmoney: E265281470651 Z422237915069 R418926282008
|
23.08.2013, 17:29 | #6 |
Форумчанин
Регистрация: 04.12.2011
Сообщений: 148
|
Hugo121 вы помогали мне ранее, мне иногда кажется вы формулами можете и партрет нарисовать...
|
23.08.2013, 17:36 | #7 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Не, я по макросам, формулы не знаю. Ну по сравнению с мастерами
И кстати такое решение макросом конечно не единственное возможное. Но думаю будет самое быстрое в работе.
webmoney: E265281470651 Z422237915069 R418926282008
|
23.08.2013, 18:42 | #8 |
Форумчанин
Регистрация: 04.12.2011
Сообщений: 148
|
Хуго спасешь мир... Спасибо... Если получится, в любом случае спасибо... Вечером либо на выходных буду ждать... Честно очень нужно ... А то у меня 2 день мозги высыхают...работаю по ночам, чтоб успеть...
|
23.08.2013, 18:47 | #9 |
Форумчанин
Регистрация: 04.12.2011
Сообщений: 148
|
Если сэкономит время часть кода написанный кулпом... за, что ему огромное спасибо!!!
Public Sub www() Dim a, b, c, d, i&, j&, n&, m& a = Sheets("Шаблон").[b5].CurrentRegion.Columns(1) d = a b = Sheets("данные с отчета").[b5].CurrentRegion ReDim Preserve a(1 To UBound(a), 1 To UBound(b, 2)) ReDim c(1 To UBound(a), 1 To UBound(b, 2)) On Error Resume Next For i = 1 To UBound(b) n = Application.Match(b(i, 1), d, 0) If Err Then Err.Clear: m = m + 1 For j = 1 To UBound(b, 2) c(m, j) = b(i, j) Next Else For j = 2 To UBound(b, 2) a(n, j) = b(i, j) Next End If Next On Error GoTo 0 Sheets("нужный результат").[i5].Offset(UBound(a)) = "отсутствует" Sheets("нужный результат").[i5].Resize(UBound(a), UBound(a, 2)) = a If m Then Sheets("нужный результат").[i5].Offset(UBound(a) + 1).Resize(m, UBound(a, 2)) = c End Sub http://www.programmersforum.ru/showthread.php?t=242257 |
23.08.2013, 22:20 | #10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Код не помог - я не стал в него углубляться
Сделал примерно как описывал выше - но оказалось несколько непродуманных мелочей, поэтому код чуть сложнее. Ориентирован на именно такое расположение данных, как в примере - только конечно строк может быть сколько угодно (но не столбцов!) Хотя с столбцами можно доработать, если нужно. Таблица, куда сводятся данные уже должна такая быть. Если нужно генерить кодом - нужно написать ещё одну процедуру. Или добавить это действие в начало этой.
webmoney: E265281470651 Z422237915069 R418926282008
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка по шаблону Exel | Slavatron1984 | Microsoft Office Excel | 9 | 16.08.2013 13:22 |
Выборка по шаблону | Taurus_UA | Microsoft Office Access | 39 | 13.09.2012 11:56 |
Вопрос по шаблону | Richmon-d | JavaScript, Ajax | 0 | 11.07.2011 14:27 |
Печать по шаблону | Klayman | Фриланс | 6 | 22.08.2008 10:10 |
Итератор к шаблону | Crucian | Общие вопросы C/C++ | 5 | 29.10.2007 16:52 |