Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Расчет даты исключая периоды - Страница 4 - Мир MS Excel

Старая форма входа
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Расчет даты исключая периоды
Расчет даты исключая периоды
MCH Дата: Воскресенье, 05.08.2012, 15:42 | Сообщение № 61
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Quote (ALARMus)
результаты Вашей и модифицированной мною Вашей формулы практически везде совпали кроме - пометил ячейки желтым

Примеры, где результаты не совпадают, когда начало или конец попадают на выходные
К сообщению приложен файл: 5464650.xlsx (24.0 Kb)
 
Ответить
Сообщение
Quote (ALARMus)
результаты Вашей и модифицированной мною Вашей формулы практически везде совпали кроме - пометил ячейки желтым

Примеры, где результаты не совпадают, когда начало или конец попадают на выходные

Автор - MCH
Дата добавления - 05.08.2012 в 15:42
ALARMus Дата: Воскресенье, 05.08.2012, 16:24 | Сообщение № 62
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 181
Репутация: 0 ±
Замечаний: 20% ±

Quote (MCH)
Примеры

Не пойму - мы словно смотрим разные файлы
Перехожу на скриншоты
К сообщению приложен файл: 7672295.jpg (69.4 Kb) · 0832150.jpg (72.3 Kb)
 
Ответить
Сообщение
Quote (MCH)
Примеры

Не пойму - мы словно смотрим разные файлы
Перехожу на скриншоты

Автор - ALARMus
Дата добавления - 05.08.2012 в 16:24
ALARMus Дата: Воскресенье, 05.08.2012, 16:26 | Сообщение № 63
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 181
Репутация: 0 ±
Замечаний: 20% ±

сам файлик
К сообщению приложен файл: 9631001.xlsx (45.5 Kb)
 
Ответить
Сообщениесам файлик

Автор - ALARMus
Дата добавления - 05.08.2012 в 16:26
DV Дата: Воскресенье, 05.08.2012, 17:03 | Сообщение № 64
Группа: Друзья
Ранг: Обитатель
Сообщений: 286
Репутация: 194 ±
Замечаний: 0% ±

Excel 2010 RUS
Замените
Code
(ЧИСТРАБДНИ(D154;E154)-2)

на
Code
МАКС(;ЧИСТРАБДНИ(D154+1;E154-1))

или с РАБДЕНЬ МСН
Code
(ЧИСТРАБДНИ(РАБДЕНЬ(D154+1;-1);РАБДЕНЬ(E154-1;1))-2)


А по поводу 2-й картинки, так у Вас формат ячеек стоит неправильный.


Сообщение отредактировал DV - Воскресенье, 05.08.2012, 17:05
 
Ответить
СообщениеЗамените
Code
(ЧИСТРАБДНИ(D154;E154)-2)

на
Code
МАКС(;ЧИСТРАБДНИ(D154+1;E154-1))

или с РАБДЕНЬ МСН
Code
(ЧИСТРАБДНИ(РАБДЕНЬ(D154+1;-1);РАБДЕНЬ(E154-1;1))-2)


А по поводу 2-й картинки, так у Вас формат ячеек стоит неправильный.

Автор - DV
Дата добавления - 05.08.2012 в 17:03
ALARMus Дата: Воскресенье, 05.08.2012, 17:14 | Сообщение № 65
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 181
Репутация: 0 ±
Замечаний: 20% ±

Quote (DV)
у Вас формат ячеек стоит неправильный.

Исправил-ок
Quote (DV)
Замените

Не понял, зачем заменять то. Вопрос касается того почему формула сравнения двух ячеек не отображает никакого результата (истина/ложь) ?
 
Ответить
Сообщение
Quote (DV)
у Вас формат ячеек стоит неправильный.

Исправил-ок
Quote (DV)
Замените

Не понял, зачем заменять то. Вопрос касается того почему формула сравнения двух ячеек не отображает никакого результата (истина/ложь) ?

Автор - ALARMus
Дата добавления - 05.08.2012 в 17:14
Pelena Дата: Воскресенье, 05.08.2012, 17:24 | Сообщение № 66
Группа: Админы
Ранг: Местный житель
Сообщений: 19188
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
Quote (ALARMus)
почему формула сравнения двух ячеек не отображает никакого результата (истина/ложь) ?

У Вас там шрифт белый


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Quote (ALARMus)
почему формула сравнения двух ячеек не отображает никакого результата (истина/ложь) ?

У Вас там шрифт белый

Автор - Pelena
Дата добавления - 05.08.2012 в 17:24
ALARMus Дата: Воскресенье, 05.08.2012, 18:19 | Сообщение № 67
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 181
Репутация: 0 ±
Замечаний: 20% ±

Quote (Pelena)
У Вас там шрифт белый

Ну вот, а то формулу замени формулу замени

Вообщем изначальная цель достигнута, теперь новая цель постичь решение предложенное MCH - пока не "асилил" cry


Сообщение отредактировал ALARMus - Воскресенье, 05.08.2012, 18:25
 
Ответить
Сообщение
Quote (Pelena)
У Вас там шрифт белый

Ну вот, а то формулу замени формулу замени

Вообщем изначальная цель достигнута, теперь новая цель постичь решение предложенное MCH - пока не "асилил" cry

Автор - ALARMus
Дата добавления - 05.08.2012 в 18:19
Gustav Дата: Воскресенье, 05.08.2012, 21:51 | Сообщение № 68
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Вторая серия "сериала". Первую см. здесь: http://www.excelworld.ru/forum/2-2110-23218-16-1344165632

Рассмотрим наглядный пример работы на поминутной шкале. Для удобства восприятия возьмем что-нибудь с небольшими числами (номерами строк). Пусть это будут первые три рабочих дня 2012 года - 10, 11, 12 января. Помним, что у нас рабочий день разбивается на 2 интервала: 08:30-12:00 до обеда и 13:00-17:30 после обеда

Будем искать общее количество рабочего времени, попадающего в интервал времени с началом в 10:45 10 января и окончанием в 15:00 12 января. Сразу в уме прикинем, что должно получиться: 8 ч x 3 дня - 2:15 - 2:30 = 19 ч 15 мин.

Для начала рассчитаем все четыре границы интервалов в минутах от полуночи в пределах одних суток. Затем добавить к этим значениям любое количество полных суток в минутах не составит труда.

Для первой "точки" 08:30 получаем 1440 х 8,5 / 24 = 510. Но 510-я минута от начала суток это на самом деле 60-тисекундный интервал (а не "точка") между (теперь уже именно) точками 8:29 и 8:30. Поэтому 510-я минута нас не очень интресует, так как она не попадает в наш дообеденный интервал. А вот 510+1 = 511-я минута, длящаяся с 8:30 до 8:31, как раз и является первой минутой интервала 08:30-12:00

Для конечной же границы интервала 12:00 всё получается нормально и "лишнюю" минуту добавлять не надо: 1440 х 12 / 24 = 720.

По аналогии для второго (послеобеденного) интервала 13:00-17:30 получаем: 1440 х 13 / 24 + 1= 781 и 1440 х 17,5 / 24 = 1050.

Теперь добавляем к каждой границе полные сутки (в минутах) для каждого из трех дней. Количество полных суток для любого дня в течение года очевидно определяется как номер этого дня от начала года минус один. Поскольку у нас все три дня - январские, то и считать удобно даже в уме.

Для интервала 08:30-12:00 10 января окончательно получаем значения: (10-1) х 1440 + 511 = 13471 минута от начала года и (10-1) х 1440 + 720 = 13680 минут от начала года. И, опуская подробные выкладки, имеем все интервалы за 3 дня в следующем виде:
[vba]
Code

10 января: 13471-13680 и 13741-14010
11 января: 14911-15120 и 15181-15450
12 января: 16351-16560 и 16621-16890
[/vba]
Теперь уже без деления по числам запишем все 6 получившихся интервалов в едином перечислении через запятую, по ходу превращая их в адреса диапазонов столбца A путем добавления соответствующей буквы и двоеточия:
[vba]
Code

A13471:A13680, A13741:A14010, A14911:A15120, A15181:A15450, A16351:A16560, A16621:A16890
[/vba]
Посчитаем количество ячеек в получившемся составном диапазоне из 6 областей. Для этого в окне отладки редактора VB исполним оператор (скопируем туда и нажмем Enter):
[vba]
Code

? Range("A13471:A13680, A13741:A14010, A14911:A15120, A15181:A15450, A16351:A16560, A16621:A16890").Cells.Count
[/vba]
Получившийся строкой ниже ответ 1440 означает количество рабочих минут в трех рабочих днях 10-12 января. Проверяем: 3 дня х 8 часов х 60 минут = 1440. Что ж, пока всё правильно.

Рассчитаем минутные границы нашего проверяемого интервала 10:45 10 января - 15:00 12 января. Опуская промежуточные выкладки, сразу получим интервал в форме диапазона:
[vba]
Code

Range("A13606:A16740")
[/vba]
Немного усложним ранее исполненный оператор, придав ему следующий вид:
[vba]
Code

? Intersect( Range("A13606:A16740"), Range("A13471:A13680, A13741:A14010, A14911:A15120, A15181:A15450, A16351:A16560, A16621:A16890" )).Cells.Count
[/vba]
После исполнения и этого оператора в окне отладке получим значение: 1155. Деля его нацело на 60, получаем 19 (количество полных часов) и остаток от деления 15 (количество минут сверх полных часов). Итого 19:15. И опять правильно - мы именно так и насчитали в уме в самом начале.

На этом разрешите закончить вторую серию и подумать, будет ли (нужно ли) продолжение.

P.S. Кстати, посмотреть интервалы пересечения можно при помощи свойства Address:
[vba]
Code

? Intersect( Range("A13606:A16740"), Range("A13471:A13680, A13741:A14010, A14911:A15120, A15181:A15450, A16351:A16560, A16621:A16890" )).Address(0, 0)
[/vba]
В получившемся списке диапазонов (я его дополнительно разбил построчно) можно увидеть, что 4 внутренних полностью совпадают с соответствующими фрагментами исходного списка, а два крайних отличаются одной из границ (по понятным причинам):
[vba]
Code

A13606:A13680, (первая граница соответствует времени 10:45 10 января)
A13741:A14010,
A14911:A15120,
A15181:A15450,
A16351:A16560,
A16621:A16740  (вторая граница соответствует времени 15:00 12 января)
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Воскресенье, 05.08.2012, 21:58
 
Ответить
СообщениеВторая серия "сериала". Первую см. здесь: http://www.excelworld.ru/forum/2-2110-23218-16-1344165632

Рассмотрим наглядный пример работы на поминутной шкале. Для удобства восприятия возьмем что-нибудь с небольшими числами (номерами строк). Пусть это будут первые три рабочих дня 2012 года - 10, 11, 12 января. Помним, что у нас рабочий день разбивается на 2 интервала: 08:30-12:00 до обеда и 13:00-17:30 после обеда

Будем искать общее количество рабочего времени, попадающего в интервал времени с началом в 10:45 10 января и окончанием в 15:00 12 января. Сразу в уме прикинем, что должно получиться: 8 ч x 3 дня - 2:15 - 2:30 = 19 ч 15 мин.

Для начала рассчитаем все четыре границы интервалов в минутах от полуночи в пределах одних суток. Затем добавить к этим значениям любое количество полных суток в минутах не составит труда.

Для первой "точки" 08:30 получаем 1440 х 8,5 / 24 = 510. Но 510-я минута от начала суток это на самом деле 60-тисекундный интервал (а не "точка") между (теперь уже именно) точками 8:29 и 8:30. Поэтому 510-я минута нас не очень интресует, так как она не попадает в наш дообеденный интервал. А вот 510+1 = 511-я минута, длящаяся с 8:30 до 8:31, как раз и является первой минутой интервала 08:30-12:00

Для конечной же границы интервала 12:00 всё получается нормально и "лишнюю" минуту добавлять не надо: 1440 х 12 / 24 = 720.

По аналогии для второго (послеобеденного) интервала 13:00-17:30 получаем: 1440 х 13 / 24 + 1= 781 и 1440 х 17,5 / 24 = 1050.

Теперь добавляем к каждой границе полные сутки (в минутах) для каждого из трех дней. Количество полных суток для любого дня в течение года очевидно определяется как номер этого дня от начала года минус один. Поскольку у нас все три дня - январские, то и считать удобно даже в уме.

Для интервала 08:30-12:00 10 января окончательно получаем значения: (10-1) х 1440 + 511 = 13471 минута от начала года и (10-1) х 1440 + 720 = 13680 минут от начала года. И, опуская подробные выкладки, имеем все интервалы за 3 дня в следующем виде:
[vba]
Code

10 января: 13471-13680 и 13741-14010
11 января: 14911-15120 и 15181-15450
12 января: 16351-16560 и 16621-16890
[/vba]
Теперь уже без деления по числам запишем все 6 получившихся интервалов в едином перечислении через запятую, по ходу превращая их в адреса диапазонов столбца A путем добавления соответствующей буквы и двоеточия:
[vba]
Code

A13471:A13680, A13741:A14010, A14911:A15120, A15181:A15450, A16351:A16560, A16621:A16890
[/vba]
Посчитаем количество ячеек в получившемся составном диапазоне из 6 областей. Для этого в окне отладки редактора VB исполним оператор (скопируем туда и нажмем Enter):
[vba]
Code

? Range("A13471:A13680, A13741:A14010, A14911:A15120, A15181:A15450, A16351:A16560, A16621:A16890").Cells.Count
[/vba]
Получившийся строкой ниже ответ 1440 означает количество рабочих минут в трех рабочих днях 10-12 января. Проверяем: 3 дня х 8 часов х 60 минут = 1440. Что ж, пока всё правильно.

Рассчитаем минутные границы нашего проверяемого интервала 10:45 10 января - 15:00 12 января. Опуская промежуточные выкладки, сразу получим интервал в форме диапазона:
[vba]
Code

Range("A13606:A16740")
[/vba]
Немного усложним ранее исполненный оператор, придав ему следующий вид:
[vba]
Code

? Intersect( Range("A13606:A16740"), Range("A13471:A13680, A13741:A14010, A14911:A15120, A15181:A15450, A16351:A16560, A16621:A16890" )).Cells.Count
[/vba]
После исполнения и этого оператора в окне отладке получим значение: 1155. Деля его нацело на 60, получаем 19 (количество полных часов) и остаток от деления 15 (количество минут сверх полных часов). Итого 19:15. И опять правильно - мы именно так и насчитали в уме в самом начале.

На этом разрешите закончить вторую серию и подумать, будет ли (нужно ли) продолжение.

P.S. Кстати, посмотреть интервалы пересечения можно при помощи свойства Address:
[vba]
Code

? Intersect( Range("A13606:A16740"), Range("A13471:A13680, A13741:A14010, A14911:A15120, A15181:A15450, A16351:A16560, A16621:A16890" )).Address(0, 0)
[/vba]
В получившемся списке диапазонов (я его дополнительно разбил построчно) можно увидеть, что 4 внутренних полностью совпадают с соответствующими фрагментами исходного списка, а два крайних отличаются одной из границ (по понятным причинам):
[vba]
Code

A13606:A13680, (первая граница соответствует времени 10:45 10 января)
A13741:A14010,
A14911:A15120,
A15181:A15450,
A16351:A16560,
A16621:A16740  (вторая граница соответствует времени 15:00 12 января)
[/vba]

Автор - Gustav
Дата добавления - 05.08.2012 в 21:51
DV Дата: Понедельник, 06.08.2012, 00:27 | Сообщение № 69
Группа: Друзья
Ранг: Обитатель
Сообщений: 286
Репутация: 194 ±
Замечаний: 0% ±

Excel 2010 RUS
Quote (ALARMus)
Ну вот, а то формулу замени формулу замени

Как Вы говорите:
перехожу на скриншоты:

К сообщению приложен файл: 7516297.png (87.0 Kb)
 
Ответить
Сообщение
Quote (ALARMus)
Ну вот, а то формулу замени формулу замени

Как Вы говорите:
перехожу на скриншоты:


Автор - DV
Дата добавления - 06.08.2012 в 00:27
VovkaPIG Дата: Понедельник, 26.08.2013, 13:39 | Сообщение № 70
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
Друзья,помогите дилетанту...
Не получается формула расчёта ночных часов, а именно:
А1=20:00 10.08.13- время начала работы
В1=7:00 11.08.13 - время окончания работы
С1= - кол-во ночных часов, если учитывается ночное время с 22:00 до 6:00, т.е. С1 должно быть равно 8:00

Заранее спасибо


http://ne-kurim.ru/ncounter/106530-10.png
 
Ответить
СообщениеДрузья,помогите дилетанту...
Не получается формула расчёта ночных часов, а именно:
А1=20:00 10.08.13- время начала работы
В1=7:00 11.08.13 - время окончания работы
С1= - кол-во ночных часов, если учитывается ночное время с 22:00 до 6:00, т.е. С1 должно быть равно 8:00

Заранее спасибо

Автор - VovkaPIG
Дата добавления - 26.08.2013 в 13:39
Pelena Дата: Понедельник, 26.08.2013, 13:48 | Сообщение № 71
Группа: Админы
Ранг: Местный житель
Сообщений: 19188
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
VovkaPIG, Ваш вопрос не имеет отношения к данной теме. К тому же Правилами форума запрещено задавать новые вопросы в чужих темах. Создайте свою тему


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеVovkaPIG, Ваш вопрос не имеет отношения к данной теме. К тому же Правилами форума запрещено задавать новые вопросы в чужих темах. Создайте свою тему

Автор - Pelena
Дата добавления - 26.08.2013 в 13:48
Вася Дата: Воскресенье, 02.04.2017, 18:07 | Сообщение № 72
Группа: Пользователи
Ранг: Новичок
Сообщений: 43
Репутация: 0 ±
Замечаний: 80% ±

Excel 2013
Irysha, я в вашем примере всё не могу настроить подсчёт Отработано до начала раб дня:=ЕСЛИ(E3<$A$1;E3-$A$1;"")


Обучаюсь вашей грамоте_-_Ученик...
 
Ответить
СообщениеIrysha, я в вашем примере всё не могу настроить подсчёт Отработано до начала раб дня:=ЕСЛИ(E3<$A$1;E3-$A$1;"")

Автор - Вася
Дата добавления - 02.04.2017 в 18:07
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Расчет даты исключая периоды
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!