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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2013, 15:14   #1
Slavatron1984
Форумчанин
 
Аватар для Slavatron1984
 
Регистрация: 04.12.2011
Сообщений: 148
По умолчанию Сортировка по шаблону по 2 критэриям

Добрый день... (данный код был и ранее у меня, но потерял) Похожая тема уже естьhttp://www.programmersforum.ru/showthread.php?t=242257, что очень помогло для еженедельного отчета... Но меня попросили разобрать 2-й квартал по новой, т.к. сотрудники не могут получить премию, т.к. бывший директор завышал планы и планы не выполнены и соответственно премии нет... По общим продажам агентам выполнили... По этому попросили разобрать по агентам... Текущий отчет меня вполне устраивает, если делать еженедельно, но восстановить 3 месяца еженедельных продаж при том, что 40 агентов для меня неподъемная планка(не сплю уже 2 ночи, а выполнил только 10%)... Кто поможет Спасибо от всех сотрудников нашей фирмы...

Задача

1. Существует лист "шаблон" с кодом товара и товар
2. Существует "выгруженный отчет" лист 2 из программы
Код товара / Товар / Агент / Кол-во/ Сумма/
3. В Листе "Нужный результат" нужно строки отсортировать код товара и товар по листу как в шаблоне, и по Агентам в столбец... В случае если товара нет в шаблоне, вынести ниже как в примере отдельно...
Кто откликнется респектище... При небольшой зарплате символически кину на счет денежек.. Т.к. ту помощь которую получаю от вас стоит очень больших денег... Спс от меня лично и сотрудников...
Вложения
Тип файла: zip Пример123456.zip (5.9 Кб, 14 просмотров)
Slavatron1984 вне форума Ответить с цитированием
Старый 23.08.2013, 16:26   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Алгоритм если делать на словаре/рях. Простой.
1. я думаю, из шаблона строки впоне можно скопировать в "результат", и КОД товара, и Товар.
Да и вообще эта таблица уже как данность. Если нет - то сперва изготавливаем её, вручную или кодом, на основе шаблона и отчёта.
Кстати, значения по присутствующим несложно подтянуть формулами, например с помощью суммпроизв().
Отсутствующие коды выявить любой другой формулой, закопипастить их вниз, и снова суммпроизв().
Но если всёж не формулами -
2. цикл по отчёту, заносим в один словарь ключ КОД товара & Товары & Агенты и кол-во в item, в другой аналогично сумму.
3. цикл в цикле по "результату", составляем ключ из "шапок", по ключу находим в словарях данные, заполняем таблицу.
4. в процессе заполнения у найденных в словаре ставим метки в item (да хоть слово "ЕСТЬ!"), затем цикл по словарю и всех без меток аналогично раскидываем по таблице.

Всё.

Вот тут я делал ровно наоборот (но общий алгоритм от этого не меняется ):
http://www.planetaexcel.ru/forum/ind...35&result=edit
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.08.2013, 17:09   #3
Slavatron1984
Форумчанин
 
Аватар для Slavatron1984
 
Регистрация: 04.12.2011
Сообщений: 148
По умолчанию

Хуго121 я вывел схему, но в реальности у меня 40 агентов 8 филиалов, и нужда именно в вба коде, каждую неделю в течении 3 месяцев... Я хочу исключить формулы... тк разделю объем работы между сотрудниками, а они с формулами не дружат... А нажать макрос я из научу
Slavatron1984 вне форума Ответить с цитированием
Старый 23.08.2013, 17:10   #4
Slavatron1984
Форумчанин
 
Аватар для Slavatron1984
 
Регистрация: 04.12.2011
Сообщений: 148
По умолчанию

Проф. Дышиглубжиев ошибся сайтом...
Slavatron1984 вне форума Ответить с цитированием
Старый 23.08.2013, 17:22   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вечером или на выходных могу написать. Сейчас занят.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.08.2013, 17:29   #6
Slavatron1984
Форумчанин
 
Аватар для Slavatron1984
 
Регистрация: 04.12.2011
Сообщений: 148
По умолчанию

Hugo121 вы помогали мне ранее, мне иногда кажется вы формулами можете и партрет нарисовать...
Slavatron1984 вне форума Ответить с цитированием
Старый 23.08.2013, 17:36   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Не, я по макросам, формулы не знаю. Ну по сравнению с мастерами
И кстати такое решение макросом конечно не единственное возможное. Но думаю будет самое быстрое в работе.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.08.2013, 18:42   #8
Slavatron1984
Форумчанин
 
Аватар для Slavatron1984
 
Регистрация: 04.12.2011
Сообщений: 148
По умолчанию

Хуго спасешь мир... Спасибо... Если получится, в любом случае спасибо... Вечером либо на выходных буду ждать... Честно очень нужно ... А то у меня 2 день мозги высыхают...работаю по ночам, чтоб успеть...
Slavatron1984 вне форума Ответить с цитированием
Старый 23.08.2013, 18:47   #9
Slavatron1984
Форумчанин
 
Аватар для Slavatron1984
 
Регистрация: 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
Slavatron1984 вне форума Ответить с цитированием
Старый 23.08.2013, 22:20   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код не помог - я не стал в него углубляться
Сделал примерно как описывал выше - но оказалось несколько непродуманных мелочей, поэтому код чуть сложнее.
Ориентирован на именно такое расположение данных, как в примере - только конечно строк может быть сколько угодно (но не столбцов!)
Хотя с столбцами можно доработать, если нужно.
Таблица, куда сводятся данные уже должна такая быть. Если нужно генерить кодом - нужно написать ещё одну процедуру. Или добавить это действие в начало этой.
Вложения
Тип файла: rar Пример123456H.rar (17.5 Кб, 15 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка по шаблону 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