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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2009, 21:41   #1
tararam
Новичок
Джуниор
 
Аватар для tararam
 
Регистрация: 15.09.2009
Сообщений: 2
По умолчанию Как считать часы?

Доброго времени суток! Помогите написать формулу, с помощью которой в excel можно рассчитать, к примеру, время заведения прихода, а именно от заезда машины на склад и до оприходования товара операторами. С учетом, что склад работает в 2 смены, с 08-00 до 17-00 (перерыв с 12-00 до 13-00) и с 17-00 по 02-00 (перерыв с 21-00 по 22-00).
Например: машина заехала в 8-00, а оприходовали ее в 16-00 следующего дня, это равно 24 часа.
Буду очень признателен за помощь!
tararam вне форума Ответить с цитированием
Старый 16.09.2009, 00:16   #2
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

если я верно понял Ваш замысел, наверное, так (см. вложенный файл).

Цитата:
Сообщение от tararam Посмотреть сообщение
Например: машина заехала в 8-00, а оприходовали ее в 16-00 следующего дня, это равно 24 часа.
Буду очень признателен за помощь!
получается 32 часа...
Вложения
Тип файла: zip Book1.zip (2.2 Кб, 25 просмотров)

Последний раз редактировалось EugeneS; 16.09.2009 в 00:19.
EugeneS вне форума Ответить с цитированием
Старый 16.09.2009, 01:44   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Судя по его подсчетам,считается видимо простой не автомобиля,а рабочее время водителя,хотя должно быть не 24 часа,а 21

Код:
Sub  Время_простоя()

Dim d As Date 'время заезда
Dim dd As Date 'время убытия

Dim a, a1, b, b1, c, c1 As Boolean
Dim rezult As Double

d = 8 / 24

dd = 1+16 / 24

If CBool((d - Int(d)) * 24 > 7.59) And (d - Int(d)) * 24 < 12 Then
a = True
End If

If CBool((dd - Int(dd)) * 24 > 7.59) And CBool((dd - Int(dd)) * 24 < 12) Then
a1 = True
End If

If CBool((d - Int(d)) * 24 > 12.59) And (d - Int(d)) * 24 < 21 Then
b = True
End If

If CBool((dd - Int(dd)) * 24 > 12.59) And (dd - Int(dd)) * 24 < 21 Then
b1 = True
End If


If CBool((d - Int(d)) * 24 > 21.59) And CBool((d - Int(d)) * 24 <= 24) Then
c = True
End If

If CBool((dd - Int(dd)) * 24 >= 21.59) And CBool((dd - Int(dd)) * 24 <= 24) Then
c1 = True
End If

If CBool((d - Int(d)) * 24 >= 0) And (d - Int(d)) * 24 < 2 Then
c = True
End If

If CBool((dd - Int(dd)) * 24 >= 0) And (dd - Int(dd)) * 24 < 2 Then
c1 = True
End If
If a = True And a1 = True Then
rezult = (dd - d) * 24 - Int(dd - d) * 8
End If

If b = True And b1 = True Then
rezult = (dd - d) * 24 - Int(dd - d) * 8
End If
If c = True And c1 = True Then
rezult = (dd - d) * 24 - Int(dd - d) * 8
End If

If a = True And b1 = True Then
rezult = (dd - d) * 24 - Int(dd - d) * 8- 1
End If
If a = True And c1 = True Then
rezult = (dd - d) * 24 - Int(dd - d) * 8 - 2
End If

If b = True And a1 = True Then
rezult = (dd - d) * 24 - Int(dd - d) * 8 - 7
End If

If b = True And c1 = True Then
rezult = (dd - d) * 24 - Int(dd - d) * 8 - 1
End If

If c = True And a1 = True Then
rezult = (dd - d) * 24 - Int(dd - d) * 8- 6
End If

If c = True And b1 = True Then
rezult = (dd - d) * 24 - Int(dd - d) * 8 - 7
End If




End Sub
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 16.09.2009 в 03:07.
doober вне форума Ответить с цитированием
Старый 17.09.2009, 23:13   #4
tararam
Новичок
Джуниор
 
Аватар для tararam
 
Регистрация: 15.09.2009
Сообщений: 2
По умолчанию

Не совсем так... Необходимо время именно рабочего времени. Например, с 8:00 одного дня до 8:00 следующего дня проходит 16 часов рабочего времени. Т.к. склад работает в 2 смены по 8 часов. С 8:00 одного дня до 16:00 следующего дня как раз и проходит 24 рабочих часа. И именно это время и нужно рассчитать автоматически.
tararam вне форума Ответить с цитированием
Старый 18.09.2009, 01:06   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Вспомним математику Пупкина.
С 8.00 до 8 .00 прошли сутки -16 рабочих часов.
С 8.00 до 16.00 прошли 8 астрономических часов и минус 1 час перерыва с 12 до 13 ,на выходе 7 часов.
16+7=23
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как считать с txt? GaNDyPaC Общие вопросы Delphi 20 16.01.2009 22:02
Как сделать так чтобы моя программа при включении отображалась в панели задач, как например часы Window ? asked86 Win Api 1 15.12.2008 08:42
Как считать строки? Черничный Общие вопросы Delphi 14 01.09.2008 14:56
как добавить в форму ЧАСЫ samosval Общие вопросы .NET 1 29.12.2007 13:51
Как считать данные из Edit? Svop Компоненты Delphi 11 20.11.2006 16:45