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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2014, 17:05   #1
MaZlobin
 
Регистрация: 29.09.2014
Сообщений: 5
Вопрос Подсчёт времени по таймлайну

Доброго времени суток.
Ломаю голову довольно давно. Значит исходные данные:
имеется лист Excel в котором порядка 17 строк (= некие процессы), расписанных по датам. Соответственно дата начала и окончания (которые вводятся пользователями данной таблицы). По этим датам я вычисляю длительность процесса.
По этой таблице была сделана диаграмма, так называемый Timeline (фото прилагается).
В чем состоит задача: необходимо подсчитать суммарную длительность данных процессов.
В чем проблема: нужно учитывать, что процессы которые протекают одновременно не должны суммироваться 2 раза (т.е. накладывающиеся по датам проведения процессы не суммируются, а общая часть берется только единожды) и пустое время (так где не было в активной фазе ни одного процесса) не должно входить в эту сумму.
Голову ломаю уже полдня. Идей было много, но постепенно при написании программы, понимал, что такое решение не исключает ошибок, либо я не представляю как его реализовать.

Так вот прошу помощи, уважаемые программисты.

Буду рад любому подспорью и подсказкам.
Спасибо.

P.S. Ячейки с датами форматированы как даты, но естественно, что считываются как числа, типа 41564 например.

Наверняка описал не всю ситуацию, спрашивайте - в моих интересах ответить.
Изображения
Тип файла: jpg Снимок.JPG (26.7 Кб, 122 просмотров)

Последний раз редактировалось MaZlobin; 23.10.2014 в 17:08.
MaZlobin вне форума Ответить с цитированием
Старый 25.10.2014, 03:37   #2
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Цитата:
(фото прилагается)
Ну по фото как-то так: берём программу типа FineReader
Распознаём. Загружаем в какой-то пикчурбокс.
Попиксельно считываем и пытаемя выделить ряды диаграммы.
По координатам рядов пытаемся как-то привязать ко времени. Если получится - считаем
Цитата:
имеется лист Excel
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 27.10.2014, 17:11   #3
vefer
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 134
По умолчанию

А нельзя ли сам документ эксель увидеть, а то так как-то не понятно.
vefer вне форума Ответить с цитированием
Старый 27.10.2014, 17:42   #4
MaZlobin
 
Регистрация: 29.09.2014
Сообщений: 5
По умолчанию

Ребят, у меня пока идея появилась. Если не получится - отпишусь.
Спасибо, что отозвались.
MaZlobin вне форума Ответить с цитированием
Старый 27.10.2014, 18:38   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

однозначно диаграмма построена по табличным данным - вот их и надо обрабатывать, а не изображение.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.10.2014, 01:40   #6
MaZlobin
 
Регистрация: 29.09.2014
Сообщений: 5
По умолчанию

Это абсолютно верно! Не графические данные, а данные Excel.
MaZlobin вне форума Ответить с цитированием
Старый 30.10.2014, 14:36   #7
vefer
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 134
По умолчанию

Я думаю, никто не понял, что именно вы хотите. Данные покажите.
vefer вне форума Ответить с цитированием
Старый 01.11.2014, 23:29   #8
MaZlobin
 
Регистрация: 29.09.2014
Сообщений: 5
По умолчанию

Спасибо, что отозвались!
Вроде "догнал" наконец и написал (программка не сложная получается).
Если кому интересно - есть 3 столбца и куча строк в Excel документе. В первом столбце - название процесса, второй и третий - даты начала и окончания процесса соответственно.
Так вот, нужно было найти суммарную длительность всех этих процессов.
Казалось бы - банально вычесть из даты начала дату конца, а потом проссумировать все длительности процессов. Но (и вот зачем я кидал диаграмму в первом посте) не тут то было - тогда программа посчитает длительность всех процессов даже ЕСЛИ ОНИ ШЛИ ОДНОВРЕМЕННО. А нужно найти было только их длительность, т.е. во времени.
Если например взять и из даты окончания самого позднего процесса вычесть дату начала самого раннего? То же вроде правильно, но ведь процессы необязательно идут строго друг за другом (т.е. окончание предыдущего не является началом следующего). Т.е. если существуют пробелы между процессами (ни один не выполнялся в это время), то такой метод их всё равно учтёт, а эти пробелы не нужно было учитывать.

В общем, решил задачу так (не судите строго, наверное "в лоб", зато работает). Записываю в массив (естественно динамический) все дни (даты) когда длился процесс (например если процесс имел место быть 1.09.2010-3.09.2010, то в массив запишется 1.09.2014 2.09.2014 3.09.2014). И так с каждым процессом, все даты в один массив друг за другом.
Затем функция превращает мой массив в "уникальный", т.е. чтобы не совпадало ни одной даты (не было повторяющихся дат). Получается, что длина (количество данных) в таком массиве и есть нужное мне значение дней, в течение которых выполнялись данные процессы.

Вот как-то так.
MaZlobin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод времени и выходного дня вместо времени Mikesh PHP 2 31.01.2014 00:22
WinAPI синхронизация времени с сайтом точного времени. Walker32 Помощь студентам 4 07.06.2012 18:59
Подсчёт времени при хэшировании текста Madragon Помощь студентам 1 07.06.2011 14:57
Подсчёт кредит revaldo666 Общие вопросы C/C++ 5 10.01.2011 13:37
Delphi подсчёт затраченного времени АлексаШка Помощь студентам 6 09.06.2010 08:51