Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / помогите посчитать разницу во времени и датах / 14 сообщений из 14, страница 1 из 1
21.05.2007, 12:08:00
    #34539165
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
НачалопростояОкончаниеремонтаДатаВремяДатаВремя10.05.200707:3014.05.200709:00надо подсчитать сколько часов простаивало оборудование
то есть должно получиться 33 часа 30 минут
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
' дата и время указывает на начало простоя и окончание простоя
Public Function Макрос4(ДатаНачала As Range, ВремяНачала As Range, ДатаОкончания As Range, ВремяОкончания As Range)
' например
'    ДатаНачала простоя = 10.05.2007    формат ячейки ДАТА
' ДатаОкончания простоя = 14.05.2007    формат ячейки ДАТА
'   ВремяНачала простоя = 07:30         формат ячейки ВРЕМЯ
'ВремяОкончания простоя = 09:00         формат ячейки ВРЕМЯ
timeWork = (ДатаОкончания.Value - ДатаНачала.Value) *  8   ' смена по 8 часов, ( предположим, что работает каждый день)
time_Out = Abs(ВремяОкончания.Value - ВремяНачала.Value)
Макрос4 = timeWork - time_Out
End Function
в ячейке написал =Макрос4 (F2;G2;J2;K2)
ожидаю увидеть результат, 33 часа 30 минут простоя
то есть (4 дня * 8 часов) - 01:30
а ячейка показывает результат 31,94
если перевожу формат ячейки в формат ВРЕМЯ, то показывает 22:30
подскажите, что сделано неправильно?
...
Рейтинг: 0 / 0
21.05.2007, 13:05:15
    #34539355
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
...
Рейтинг: 0 / 0
21.05.2007, 13:07:51
    #34539369
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
vbaproможет можно и оптимальнее :)
...
Рейтинг: 0 / 0
21.05.2007, 13:37:27
    #34539469
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
vbapro vbaproможет можно и оптимальнее :)
классно, спасибо
...
Рейтинг: 0 / 0
31.05.2007, 09:19:14
    #34563223
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
подскажите идею или алгоритм (хотя бы в общих чертах)

Оборудование Начало простоя Конец простоя Простой оборудованияСтанок токарн. 25.05.2007 16:00 26.05.2007 09:00 1 ч + 1 ч = 02:00Фрезерный ст. 26.05.2007 11:00 27.05.2007 11:00 5 ч + 3 ч = 08:00штамп 25.05.2007 08:00 30.05.2007 09:00 40 ч + 1ч = 41:00
Рабочий день заканчивается в 17:00, а начинается в 08:00, обед с 12:00 до 13:00
Таких записей в Excel будет сотни
и ещё придётся учитывать праздники и выходные
...
Рейтинг: 0 / 0
31.05.2007, 14:39:25
    #34564753
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
vbapro vbaproможет можно и оптимальнее :)

все еще проще:

десятичн.: =((C2+D2)-(A2+B2))*8
время: =((C2+D2)-(A2+B2))*"08:00" + формат [h]:mm
текст: =ТЕКСТ(((C2+D2)-(A2+B2))*"08:00";"[h]:mm")

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
31.05.2007, 14:45:05
    #34564781
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
klen_подскажите идею или алгоритм (хотя бы в общих чертах)

Оборудование Начало простоя Конец простоя Простой оборудованияСтанок токарн. 25.05.2007 16:00 26.05.2007 09:00 1 ч + 1 ч = 02:00Фрезерный ст. 26.05.2007 11:00 27.05.2007 11:00 5 ч + 3 ч = 08:00штамп 25.05.2007 08:00 30.05.2007 09:00 40 ч + 1ч = 41:00
Рабочий день заканчивается в 17:00, а начинается в 08:00, обед с 12:00 до 13:00
Таких записей в Excel будет сотни
и ещё придётся учитывать праздники и выходные

см. здесь:
http://www.cpearson.com/excel/datetime.htm
http://www.cpearson.com/excel/datetime.htm#AddingTimes
http://www.cpearson.com/excel/DateTimeWS.htm#WorkHours
http://www.cpearson.com/excel/overtime.htm


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
31.05.2007, 15:17:00
    #34564931
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
Оборудование Начало простоя Конец простоя Простой оборудования Станок токарн. 25.05.2007 16:00 26.05.2007 09:00 1 ч + 1 ч = 02:00
формула по ссылке =IF(AND(INT(StartDT)=INT(EndDT) и так далее возвращает 17 часов,
но дело в том, что рабочий день закончился в 17:00
следовательно 25-го мая станок простоял 1 час, и 26 мая, 1 час
т.е. всего 2 часа станок простоял без работы
...
Рейтинг: 0 / 0
31.05.2007, 15:55:45
    #34565141
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
нет
всё правильно
это я ошибся
...
Рейтинг: 0 / 0
31.05.2007, 17:38:35
    #34565662
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
klen_нет
всё правильно
это я ошибся

а по-моему в твоем случае она все-таки врет :-) Попробуй прилагаемый файл.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
01.06.2007, 00:46:09
    #34566367
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
KL (XL) klen_нет
всё правильно
это я ошибся

а по-моему в твоем случае она все-таки врет :-) Попробуй прилагаемый файл.

KL
[MVP - Microsoft Excel]


Привет!!!
Да уж далеко шагнула мысль. Я никогда и не задумывался насколько ЧИСТРАБДНИ() медленная.
Поэтому прочитав несдержался решил поучавствовать. Тем более мне так понравилась идея определения массива значений дат внутри диапазона. Ещё быстрее:
=СУММПРОИЗВ((ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;ЦЕЛОЕ(B6)):ИНДЕКС(A:A;ЦЕЛОЕ(C6)));2)<6)*ЕНД(ПОИСКПОЗ(СТРОКА(ИНДЕКС(A:A;ЦЕЛОЕ(B6)):ИНДЕКС(A:A;ЦЕЛОЕ(C6)));$A$8:$A$22;0)))
Но мне больше так понравилось хоть и медленнее:
=СУММПРОИЗВ((ДЕНЬНЕД(СТРОКА(ДВССЫЛ(ЦЕЛОЕ(B6)&":"&ЦЕЛОЕ(C6)));2)<6)*ЕНД(ПОИСКПОЗ(СТРОКА(ДВССЫЛ(ЦЕЛОЕ(B6)&":"&ЦЕЛОЕ(C6)));$A$8:$A$22;0)))
...
Рейтинг: 0 / 0
01.06.2007, 02:12:24
    #34566438
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
DeggasadПривет!!!
Да уж далеко шагнула мысль. Я никогда и не задумывался насколько ЧИСТРАБДНИ() медленная.
Поэтому прочитав несдержался решил поучавствовать. Тем более мне так понравилась идея определения массива значений дат внутри диапазона. Ещё быстрее:
=СУММПРОИЗВ((ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;ЦЕЛОЕ(B6)):ИНДЕКС(A:A;ЦЕЛОЕ(C6)));2)<6)*ЕНД(ПОИСКПОЗ(СТРОКА(ИНДЕКС(A:A;ЦЕЛОЕ(B6)):ИНДЕКС(A:A;ЦЕЛОЕ(C6)));$A$8:$A$22;0)))
Но мне больше так понравилось хоть и медленнее:
=СУММПРОИЗВ((ДЕНЬНЕД(СТРОКА(ДВССЫЛ(ЦЕЛОЕ(B6)&":"&ЦЕЛОЕ(C6)));2)<6)*ЕНД(ПОИСКПОЗ(СТРОКА(ДВССЫЛ(ЦЕЛОЕ(B6)&":"&ЦЕЛОЕ(C6)));$A$8:$A$22;0)))
Привет,

1 вариант пожалуй получше, а вот от второго я отказался несколько лет назад из-за летучести ДВССЫЛ :-)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
01.06.2007, 08:01:47
    #34566541
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
KL (XL)

1 вариант пожалуй получше, а вот от второго я отказался несколько лет назад из-за летучести ДВССЫЛ :-)

KL
[MVP - Microsoft Excel]

Как всегда забываю! Но всё же прикольная формула!
...
Рейтинг: 0 / 0
01.06.2007, 08:13:55
    #34566557
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите посчитать разницу во времени и датах
Большое спасибо! За помощь, за готовое решение.
Разберусь в последовательности вычислений и перепишу в макрос,
т.к. с VBA не много знаком, а команды Excel-я совершенно не знаю.
Благодарю!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / помогите посчитать разницу во времени и датах / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]