Не очень понятно, где у Вас ночные часы, где вечерние?
Если считать ночные с 00:00 по 06:00, то как Вы предполагаете вечерние? С какого и по какое время?
В таблице увидел большие странности, формулы слишком громоздки не то, что для вычислений, но и для понимания.
Мне кажется, можно найти более простое решение, если чуть-чуть изменить структуру таблицы.
Дату указать отдельно, а часы начала и окончания работ — также отдельно. Сразу отпадет необходимость в смещениях и прочих хитростях.
В ячейке «Начало» пишем не 28.02.2010 5:40:00, а 5:40
Соответственно в ячейке «Конец» — не 28.02.2010 15:20:00, а 15:20
В вычислениях имеем:
В ячейку «Раб.время» вводим формулу: =ОСТАТ(RC[-1]-RC[-2];1) вместо
нудного условия =ЕСЛИ(ИЛИ(RC[-2]=»»;RC[-1]=»»);»»;RC[-1]-RC[-2])
В ячейку «Ночные» вместо гигаформулы:
=ЕСЛИ(ИЛИ(RC[-3]=»»;RC[-2]=»»);»»;(СУММ(—(СТРОКА(ИНДЕКС(R1C1:R3000C1;ТЕКСТ(RC[-3];»[мм]»)-ТЕКСТ(ЦЕЛОЕ(RC[-3]);»[мм]»)+1):ИНДЕКС(R1C1:R3000C1;ТЕКСТ(RC[-2];»[мм]»)-ТЕКСТ(ЦЕЛОЕ(RC[-3]);»[мм]»)))=ТРАНСП(СТРОКА(R1321:R1800))))+СУММ(—(СТРОКА(ИНДЕКС(R1C1:R3000C1;ТЕКСТ(RC[-3];»[мм]»)-ТЕКСТ(ЦЕЛОЕ(RC[-3]);»[мм]»)+1):ИНДЕКС(R1C1:R3000C1;ТЕКСТ(RC[-2];»[мм]»)-ТЕКСТ(ЦЕЛОЕ(RC[-3]);»[мм]»)))=ТРАНСП(СТРОКА(R1:R360)))))/1440)
по моему мнению надо поставить более простую, которая выполняет те же действия, что и мегаформула, но понятнее и удобнее для редактирования:
=ЕСЛИ((RC[-3])<ВРЕМЯ(6;0;0);ВРЕМЯ(6;0;0)-(RC[-3]);ЕСЛИ((RC[-3])>ВРЕМЯ(6;0;0);ВРЕМЯ(6;0;0);0))
Судить строго не надо, просто сделал это на вскидку, возможно, не учел какую-то проверку. Не думаю, что надо так извращаться с простым заданием. Вечерние не делал, так как не понял временной период.
Однако хотел просто показать, как с помощью простой реструктуризации данных можно значительно упростить себе жизнь.
Расчет ночных и дневных часов, между промежутком времени. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Очень много вопросов приходит по поводу учета рабочего времени с дневными и ночными часами. Как правило, в организации есть различные графики, ночные и дневные, при этом ночные смены могут захватывать дневные часы, поэтом простое перемножение количества часов на ставку не получится, нужно отдельно считать ночные и дневные смены.
Вот один из примеров присланного письма, его и постараемся рассмотреть в упрощенном варианте.
А кто-нибудь занимался составлением графика учета рабочего времени с дневными и ночными сменами? Мне нужно сделать так, чтоб отдельно считались дневные и ночные часы. То есть, если в графике стоит 12, значит 12 считаются как дневные, а вот с ночными сложности..Человек заступает на смену в 20:00, и до 22:00 идут 2 часа дневных, и так же утром с 6:00 до 8:00 тоже 2 часа дневных.. в графике ставят 4 и 8 часов в разные дни, но из них по 2 часа получаются дневные.. вот как бы задать такое условие, чтобы дневные часы считались в одной ячейке, а ночные в другой..
Обычно, данные вопросы поступают в рубрику функции «ЕСЛИ», я бы хотел рассмотреть задачу на примере функции «ВПР». Конечно, я рассматриваю только подсчет одного дня, обычно же это календарный месяц, но никто не мешает вам сделать все то же самое на все дни. Да, придется немного повозиться, но потом можно использовать его как шаблон на все последующие месяцы. В добавок, в отличии от функции «ЕСЛИ», если будут вводиться другие смены, то вы без труда сможете их добавить, просто приписав к таблице со сменами, не изменяя саму формулу.
Итак, у нас есть три смены, в нашем случае они обозначены как 12,8,4 (но это не обязательно, можно сделать вполне удобочитаемые буквы или сокращения смен для наглядности).
Таблица графика рабочих смен сотрудников за один день.
Для решения задачи мы вводим два поля «день» и «ночь», где будут считаться соответствующие часы (это не обязательно, можно всю формулу прописать в столбце «Всего») и с помощью функции ВПР находим то количество часов, которое соответствует смене.
В данном случае, искомое значение будет «Смена», таблица с данными это таблица со сменами (не забудьте закрепить ее, нажав «F4», чтобы формулу можно было протянуть на всех сотрудников).
И в конце считаем общее количество часов, умножив ночные часы на повышающий коэ-т за ночные смены.
Пример файла — Скачать
Single simple formula to calculate the hours worked for a day shift or night shift and including lunch and all breaks in the calculation.
This tutorial will show you the simple formula that you can use for this and tell you how you can customize it to work for your situation, where you might have more breaks or fewer breaks for which to account.
(Some times in this tutorial are presented using the 24 hour clock, or military time, but that doesn’t change anything in regard to the formulas or their outcomes.)
Sections:
Magic Formula to Calculate Hours Worked
Simple Hours Worked
Day Shift Hours Worked with Breaks and Lunch
Night Shift Hours Worked with Breaks and Lunch
Notes
Magic Formula to Calculate Hours Worked
=MOD(Time_Out - Time_In,1)*24
Time_Out is when they stopped work for whatever reason.
Time_In is when they started work.
*24 is what changes the time format into a decimal format that is easier to read and can be used in mathematical calculations, such as for wages.
This simple formula is the building block for the rest of the tutorial and works for day and night shifts alike.
Using the MOD function, we are able to seamlessly calculate the number of hours and minutes worked during a day shift, night shift, or over both without the hassel of unmanageably long formulas.
This formula also lets us take breaks and lunch into account; we simply create this formula for each break from work and then subtract that from the total time between the first IN and last OUT of the day.
Everything in this tutorial will be an extension of this formula, basically just adding it again for each IN/OUT section.
Let’s start with a simple example in the next section and work our way up to the full example.
Simple Hours Worked
Note: the easiest way to perform this calculation is also the least useful in the real-world and so I won’t cover it beyond this next sentence. With simple times, you can subtract the OUT time from the IN time to get the result, such as =B1-A1 where A1 has the IN time and B1 has the OUT time. This formula breaks-down very quickly in the real world though, so it won’t be covered here; however, I felt it was important to mention it in this note.
=MOD(C2-B2,1)
C2 is the time work stoped. OUT
B2 is the time work started. IN
This returns a time like this:
Get Hours from the Time
The current format is still a time format and is not very useful for calculating how much to pay someone, among other considerations, so let’s change the time to hours.
=MOD(C2-B2,1)*24
*24 was added to the end of the formula, which multiplies the time by 24. This effectively converts the time into a decimal form.
Now:
8 hours and 30 minutes becomes 8.5
8 hours and 45 minutes becomes 8.75
Etc.
Result:
Problem: Weird Format for the Time
If you get a weird time result when you multiply the time by 24, make sure to change the formatting of the cell to General.
If the format is still set to a time or date format, it will not display correctly.
Hint: Ctrl + Shift + ~ will quickly change all selected cells to the General format.
Wage Calculation
Now that you have hours and decimals for the time someone worked, you can easily use this number to calculation wages or sum hours worked per week or month or year, etc.
Day Shift Hours Worked with Breaks and Lunch
We use one MOD function for each IN/OUT segment and subtract the breaks from the total time worked.
=(MOD(G12-B12,1)-MOD(D12-C12,1)-MOD(F12-E12,1))*24
MOD(G12-B12,1) calculates the total time that was worked, using the first time IN and last time OUT.
-MOD(D12-C12,1) calculates the time of the first break. Notice the minus sign in front of this MOD; that is because we are subtracting this break from the total time worked in the day.
-MOD(F12-E12,1) calculates the time of the second break. Notice the minus sign in front of this MOD; that is because we are subtracting this break from the total time worked in the day.
*24 this is put on at the end in order to convert the time format into an hour decimal format that is easy to view and use in calculations such as how much to pay someone. It converts something from 8:30 into 8.5 or 8:45 into 8.75, etc.
() remember to enclose all of the MOD functions together within a set of parentheses before multiplying by 24 or the result will be incorrect.
Result:
This is the basic formula.
Add or remove as many MOD() chunks as you need in order to account for all of the breaks that someone can take during the day.
Funky Formatting
If the result doesn’t look right, make sure to set the result cell’s formatting to General. You can do this from the Home tab or use the keyboard shortcut Ctrl + Shift + ~.
Night Shift Hours Worked with Breaks and Lunch
This heavenly formula is exactly the same as the one for the day shift!
We use one MOD function for each IN/OUT segment and subtract the breaks from the total time worked.
=(MOD(G13-B13,1)-MOD(D13-C13,1)-MOD(F13-E13,1))*24
Cell references have been updated, from the day formula; in Excel I literally just copied the formula down one cell, so the only change was the automatically updating relative cell references.
MOD(G13-B13,1) calculates the total time that was worked, using the first time IN and last time OUT.
-MOD(D13-C13,1) calculates the time of the first break. Notice the minus sign in front of this MOD; that is because we are subtracting this break from the total time worked.
-MOD(F13-E13,1) calculates the time of the second break. Notice the minus sign in front of this MOD; that is because we are subtracting this break from the total time worked.
*24 this is put on at the end in order to convert the time format into an hour decimal format that is easy to view and use in calculations such as how much to pay someone. It converts something from 8:30 into 8.5 or 8:45 into 8.75, etc.
() remember to enclose all of the MOD functions together within a set of parentheses before multiplying by 24 or the result will be incorrect.
Result:
This is the basic formula.
Add or remove as many MOD() chunks as you need in order to account for all of the breaks that someone can take.
Funky Formatting
If the result doesn’t look right, make sure to set the result cell’s formatting to General. You can do this from the Home tab or use the keyboard shortcut Ctrl + Shift + ~.
Notes
There are many different ways to calculate time and hours worked in Excel, but, every single way, when used in the real world, is going to be more complicated and confusing than using the MOD function method exhibited in this tutorial. With the MOD function, everything is simple and logical and easy-to-follow. As such, I didn’t spend time showing you other methods because, in reality, you shouldn’t use any other method for the vast majority of situations.
Use the MOD function, keep the code modular, build on it as needed with required logic, and it will all work out, just give it time!
Download the workbook for this tutorial to view these examples in Excel.
- Добро пожаловать на Профессиональные приемы работы в Microsoft Excel.
-
Войти -
Регистрация
Excel от новичка до эксперта
16.04.2023, 18:41
Новости:
Из правил форума: Тема должна отражать суть вопроса, топики типа «help please» будут удаляться!
Главное меню
Главное меню
-
Начало
-
Статьи по Excel
-
Мы ВКонтакте
-
Поиск
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Подсчитать кол-во ночных часов
Подсчитать кол-во ночных часов
Автор Coballt88, 28.09.2011, 23:01
« назад — далее »
Печать
Вниз
Страницы1
Действия пользователя
Coballt88
- Новичок
- Сообщения: 1
- Записан
Подсчитать кол-во ночных часов
28.09.2011, 23:01
Необходимо подсчитать кол-во отработанных ночных часов в промежутке от 22:00 до 6:00. Есть время прихода и ухода. См. вложение. Заранее благодарен.
c2d9ef65f205c80403ebf4468353951cdd5eb68b.xlsx
9.04 КБ
скачиваний: 68
Wasilic
- Старожил
- Сообщения: 989
- Все идет хорошо, только мимо …
-
- Расположение: Беларусь
- Карма: 92
- Записан
Re: Подсчитать кол-во ночных часов
#1
29.09.2011, 01:02
Последнее редактирование: 29.09.2011, 01:12 от Wasilic
Эта задача решена здесь.
Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.
MCH
- Постоялец
- Сообщения: 433
- Карма: 44
- Записан
Re: Подсчитать кол-во ночных часов
#2
29.09.2011, 08:54
вариант:
Код Выделить Развернуть
=МИН(ОСТАТ(D2;1);--"6:00")-МИН(ОСТАТ(C2;1);--"6:00")+МАКС(ОСТАТ(D2;1);--"22:00")-МАКС(ОСТАТ(C2;1);--"22:00")+(ОСТАТ(D2;1)<ОСТАТ(C2;1))*(1+"6:00"-"22:00")
MCH
- Постоялец
- Сообщения: 433
- Карма: 44
- Записан
Re: Подсчитать кол-во ночных часов
#3
29.09.2011, 09:31
Еще вариант (не самый лучший, т.к. очень медленный):
Код Выделить Развернуть
=СУММПРОИЗВ(ПРОСМОТР(ЧАС(C2+(СТРОКА(A$1:ИНДЕКС(A:A;(D2-C2)*24*60))-1)/24/60);{0;6;22};{1;0;1}))/24/60
Печать
Вверх
Страницы1
Действия пользователя
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Подсчитать кол-во ночных часов
Действия пользователя
Печать