|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.07.2019, 19:40 | #1 | |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
прошу помочь с обработкой массива данных
Добрый день!
В общем задача следующая: В рамках заявки создается несколько нарядов. Наряд может создаваться как одним сотрудником, так и разными. В датах, которые относятся к разным годам/месяцам. Нужно посчитать наряды по сотрудникам и по датам в следующей логике: Если в рамках одной заявки с даты создания предыдущего наряда прошло более 30 дней, то наряд засчитывается. Если менее 30 дней, то наряд считается дублем и не учитывается. Пример: Цитата:
Если формулы массива, то наряд с минимальной и максимальной датой в рамках заявки я еще могу найти, а как искать все промежуточные? А потом находить разницу в днях? как искать разницу между 2м и 3м? или 3м и 4м? Если на VBA... представляется куча вложенных циклов... а если строк вдруг станет больше? и вобще больше на костыль смахивает. поделитесь экспертным мнением, возможно натолкнете меня на верную мысль. Расчет нужно делать в рамках одного месяца по сотрудникам. около 5к строк получается. выборка делается по всем нарядам из заявок в которых есть наряд с датой создания в месяце для которого делается расчет Последний раз редактировалось unbanned; 31.07.2019 в 21:01. |
|
31.07.2019, 22:34 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
написано много. понятно мало
Прикрепите пример исходный данных в файле Excel Покажите, в какой ячейке (в каком столбце) какой результат надо получить Тогда, может, кто-нибудь поймёт что надо, и подскажет. |
31.07.2019, 23:10 | #3 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
на мой взгляд написано достаточно понятно... что же, со стороны виднее.
еще раз обстоятельно и сначала. Есть выборка данных. Смысловая нагрузка следующая: Создается заявка, в рамках заявки создается заказ-наряд. Но позднее могут создать еще один заказ-наряд в рамках этой же заявки. Срок "жизни" наряда принимаем за 30 дней. Т.е. если в период 30 дней c даты создания наряда создан еще один в рамках этой же заявки, то такой заказ-наряд считается дублем. т.к. предыдущий еще "живой" (ему необходимо поставить флаг="ЛОЖЬ"). Если создается заказ наряд по истечение более 30 дней от предыдущего, то он считается уникальным т.к. предыдущий наряд уже "мертвый" (флаг = "ИСТИНА"). прикладываю xlsx. с примерным набором данных, понятно что номера заказа и номера заявки цифровые значения. по итогу мне нужно проставить флаг для каждого наряда исходя из выше описанной логики. формулами, макросом или еще как-то. у меня сложность в том, что я не могу придумать как это сделать кроме как тупого перебора. берем заявку, находим все наряды связанные с ней, ищем наряд с минимальной датой ему ставим истину, находим следующий, находим разницу в днях между их датами создания, проверяем более ли она 30 дней и так далее. но это не эффективно, вот и решил поискать совета у более опытных товарищей. Последний раз редактировалось unbanned; 31.07.2019 в 23:44. |
31.07.2019, 23:58 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
см. колонка Флаг
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
01.08.2019, 00:09 | #5 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
|
01.08.2019, 01:08 | #6 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
понял 09.07 является дублем по отношению к 07.07, а не к 06.06...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
01.08.2019, 01:13 | #7 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 530
|
|
01.08.2019, 01:34 | #8 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
формула там в диспетчере имен, которая определяет З1, дату предыдущего наряда по текущей заявке
(там без водки не разобраться)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[C++]: Прошу помочь написать комментарии к задаче о сортировке массива методом слияния | Никита757 | Помощь студентам | 0 | 28.12.2015 20:27 |
Нужна помочь с обработкой данных | LLe | Visual C++ | 0 | 23.11.2015 13:03 |
Прошу помочь с копированием данных | vist17 | Microsoft Office Excel | 1 | 12.06.2009 11:46 |
Прошу помочь с слиянием данных | Neyron | Microsoft Office Excel | 19 | 04.06.2008 09:11 |