+ Ответить в теме
Страница 1 из 3
1 2 3 ПоследняяПоследняя
Показано с 1 по 10 из 23

Тема: расчет отработанного времени

  1. #1
    Romanka is on a distinguished road
    Регистрация
    12.01.2007
    Сообщений
    8
    Вес репутации
    0

    Unhappy расчет отработанного времени

    Помогите написать формулу в Excel
    Нобходимо высчитать временя в часах и минутах с момента поступления завки до его отрабоки, время работы с понедельника по пятницу с 9-до 18 (т.е. если заявка поступила в субботу, то считать время с понедельника, если после 18:00 то считать что заявка поступила на следующий день в 9:00.

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    system architect pashulka will become famous soon enough pashulka will become famous soon enough
    Регистрация
    24.11.2004
    Возраст
    76
    Сообщений
    813
    Вес репутации
    16

    По умолчанию Re: расчет отработанного времени

    Romanka, Посмотрите этот пример, возможно он окажется полезен ...
    Вложения

  4. #3
    system architect Avsha is on a distinguished road
    Регистрация
    08.09.2005
    Адрес
    KZ
    Сообщений
    664
    Вес репутации
    14

    По умолчанию Re: расчет отработанного времени

    Вот такой вариант подготовил,
    тщательно не тестировал, но вроде работает...

    в виде пользовательской функции, судя по алгоритму
    на формулах будет сложновато реализовать


    Код :
    1. Public Function Len_DateTime(dt1 As Date, dt2 As Date, Min0_Hour1_Day2 As Integer)
    2. Application.Volatile True
    3.  
    4. Dim i As Long
    5. Dim S As Double
    6. Dim Report_Str As String
    7. Dim StartWorkDay As Date, EndWorkDay As Date
    8.     StartWorkDay = "09:00:00"
    9.     EndWorkDay = "18:00:00"
    10.  
    11. 'Проверка на достоверность исходных данных
    12. '-------------------------------------------------------------
    13. If dt1 > dt2 Then Len_DateTime = 0: Exit Function
    14.  
    15.  
    16. 'Приведение начала и конца диапазона к границам рабочего дня
    17. '-------------------------------------------------------------
    18. If TimeValue(dt1) < StartWorkDay Then
    19.                                     dt1 = DateValue(dt1) + TimeValue(StartWorkDay)
    20.                                  Else
    21. If TimeValue(dt1) > EndWorkDay Then dt1 = DateValue(dt1) + TimeValue(EndWorkDay)
    22. End If
    23.  
    24.  
    25. If TimeValue(dt2) < StartWorkDay Then
    26.                                     dt2 = DateValue(dt2) + TimeValue(StartWorkDay)
    27.                                  Else
    28. If TimeValue(dt2) > EndWorkDay Then dt2 = DateValue(dt2) + TimeValue(EndWorkDay)
    29. End If
    30.  
    31.  
    32. 'Начало и конец временного диапазона относятся к одному дню
    33. '-------------------------------------------------------------
    34. If Int(dt1) = Int(dt2) Then
    35.  
    36. If Weekday(dt1, vbMonday) <> 6 And Weekday(dt1, vbMonday) <> 7 Then
    37.     S = S + (TimeValue(dt2) - TimeValue(dt1))
    38.     'в отчет
    39.     Report_Str = Report_Str & DateValue(dt1) & " / " _
    40.                     & Weekday(dt1, vbMonday) & " / " _
    41.                     & Format(TimeValue(dt2) - TimeValue(dt1), "hh:mm:ss") _
    42.                     & " " & Chr(13)
    43. End If
    44.         GoTo End_work
    45. End If
    46.  
    47.  
    48. 'Начало и конец временного диапазона относятся к разным дням
    49. '-------------------------------------------------------------
    50. ' Обработка дня - начала временного диапазона
    51. If Weekday(dt1, vbMonday) <> 6 And Weekday(dt1, vbMonday) <> 7 Then
    52.     S = S + (EndWorkDay - TimeValue(dt1))
    53.     'в отчет
    54.     Report_Str = Report_Str & DateValue(dt1) & " / " _
    55.                     & Weekday(dt1, vbMonday) & " / " _
    56.                     & Format(EndWorkDay - TimeValue(dt1), "hh:mm:ss") _
    57.                     & " " & Chr(13)
    58. End If
    59.  
    60. ' Обработка дней - между началом и концом временного диапазона
    61. For i = Int(CDbl(dt1)) + 1 To Int(CDbl(dt2)) - 1
    62.  
    63. If Weekday(CDate(i), vbMonday) <> 6 And _
    64.    Weekday(CDate(i), vbMonday) <> 7 Then
    65.       S = S + (EndWorkDay - StartWorkDay)
    66.       'в отчет
    67.       Report_Str = Report_Str & CDate(i) & " / " _
    68.                     & Weekday(CDate(i), vbMonday) & " / " _
    69.                     & Format(EndWorkDay - StartWorkDay, "hh:mm:ss") _
    70.                     & " " & Chr(13)
    71. End If
    72. Next i
    73.  
    74. ' Обработка дня - конца временного диапазона
    75. If Weekday(dt2, vbMonday) <> 6 And Weekday(dt2, vbMonday) <> 7 Then
    76.     S = S + (TimeValue(dt2) - StartWorkDay)
    77.     'в отчет
    78.     Report_Str = Report_Str & DateValue(dt2) & " / " _
    79.                     & Weekday(dt2, vbMonday) & " / " _
    80.                     & Format(TimeValue(dt2) - StartWorkDay, "hh:mm:ss") _
    81.                     & " " & Chr(13)
    82. End If
    83.  
    84.  
    85.  
    86. End_work:
    87.    
    88.     Select Case Min0_Hour1_Day2
    89.     Case 0
    90.         Len_DateTime = S * 24 * 60
    91.     Case 1
    92.         Len_DateTime = S * 24
    93.     Case 2
    94.         Len_DateTime = S
    95.     Case Else
    96.         Len_DateTime = Report_Str
    97.     End Select
    98.    
    99.     'вывод отчета
    100.     'MsgBox Report_Str
    101.    
    102. End Function
    Вложения

  5. #4
    system architect pashulka will become famous soon enough pashulka will become famous soon enough
    Регистрация
    24.11.2004
    Возраст
    76
    Сообщений
    813
    Вес репутации
    16

    По умолчанию Re: расчет отработанного времени

    судя по алгоритму на формулах будет сложновато реализовать
    Нет, поставленную задачу можно реализовать с помощью весьма простых и банальных формул (см. мой предыдущий пост) Да, и лично мне сложно поверить в то, что разница между 15.01.07 09:00:00 и 16.01.07 09:00:00 должна составлять не один день, а 0.38
    Последний раз редактировалось pashulka; 14.01.2007 в 09:34.

  6. #5
    system architect Avsha is on a distinguished road
    Регистрация
    08.09.2005
    Адрес
    KZ
    Сообщений
    664
    Вес репутации
    14

    По умолчанию Re: расчет отработанного времени

    Да, и лично мне сложно поверить в то, что разница между 15.01.07 09:00:00 и 16.01.07 09:00:00 должна составлять не один день, а 0.38
    Может конечно я не правильно понял задачу, но время между началом и концом я считал именно то, что входит в рабочее время, т.е. 9/24 = 0,375, а не абсолютное.

  7. #6
    Romanka is on a distinguished road
    Регистрация
    12.01.2007
    Сообщений
    8
    Вес репутации
    0

    По умолчанию Re: расчет отработанного времени

    Спасибо!!! Супер! Все получилось!!

  8. #7
    system architect pashulka will become famous soon enough pashulka will become famous soon enough
    Регистрация
    24.11.2004
    Возраст
    76
    Сообщений
    813
    Вес репутации
    16

    По умолчанию Re: расчет отработанного времени

    Может конечно я не правильно понял задачу, но время между началом и концом я считал именно то, что входит в рабочее время, т.е. 9/24 = 0,375, а не абсолютное.
    Насколько мне известно, рабочий день насчитывает восемь часов, а девять это уже нарушение законодательства РФ, со всеми вытекающими событиями. А если серьёзно, то подобный подход, который будет применён не в отношении расчёта заработной платы, а при расчёте времени обработки заявок, может привести к ситуации, при которой, заказав некий товар с обязательным условием его доставки, например, в течении трёх дней, я могу получить этот товар через семь дней. Причём, фирма-поставщик будет утверждать, что это законно, т.к. у них используется именно такая система рассчётов. И честно говоря, меня, подобная вакханалия, совсем не обрадует ...

  9. #8
    system architect Avsha is on a distinguished road
    Регистрация
    08.09.2005
    Адрес
    KZ
    Сообщений
    664
    Вес репутации
    14

    По умолчанию Re: расчет отработанного времени

    Предполагаю, что эта задача относится к задаче контроля начальником человека, который как раз занимается отработкой заявок, т.е. отслеживания эффективности отработки заявки в подразделении.

    Типа - "сколько рабочего времени уже прошло, а ты такой-сякой ничего до сих пор еще не сделал!"
    Можно выкидывать еще аларменное сообщение, когда это расчетное время превышает определенное критическое значение

  10. #9
    system architect pashulka will become famous soon enough pashulka will become famous soon enough
    Регистрация
    24.11.2004
    Возраст
    76
    Сообщений
    813
    Вес репутации
    16

    По умолчанию Re: расчет отработанного времени

    Подобный контроль также можно осуществлять исходя из 24-ч. да и ругань начальства всегда была, типа, прошло три дня, а конь не валялся ... Впрочем, вопрос уже решён, так что дальнейшие выяснения теперь не актуальны.

  11. #10
    system architect Avsha is on a distinguished road
    Регистрация
    08.09.2005
    Адрес
    KZ
    Сообщений
    664
    Вес репутации
    14

    По умолчанию Re: расчет отработанного времени

    для полного архива решения задачки...
    Вложения
    Последний раз редактировалось Avsha; 20.01.2007 в 02:04.

+ Ответить в теме
Страница 1 из 3
1 2 3 ПоследняяПоследняя

Похожие темы

  1. Расчет ячейки по формулам других ячеек
    Друзья проблема стоит следующим образом есть ячейка значения в которой расчитать одной формулой просто невозможно- колоссальное количество условий...
    от Diment в разделе MS Office и VB(A).
  2. Захват времени GMT +03.00 в будильнике
    Имею код вида <SCRIPT language=JavaScript> <!-- var tags_before_clock = "" var tags_middle_clock = " " var tags_after_clock =...
    от P1ece в разделе Java
  3. установка локального времени
    Короче есть у меня программа, мне надо установить в ней локальное время. Вопрос! как это сделать???????? Decodedate отказывается слушаться при...
    от maelz в разделе Delphi и Pascal
  4. Excel. Расчет данных в определенном столбце.
    такой вопрос по Excel: допустим существует лист, назовем его Data в нем содержится таблица с исходными данными, которые меняются каждый день (просто...
    от Hunter в разделе MS Office и VB(A).
  5. Интервалы времени
    Чего- то я не могу сделать простой запрос. Как сделать проверку, пересекает ли интервал времени А(:beginDate,:endDate) интервал времени ...
    от Absurd в разделе SQL

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения