Подсчет дней недели между двумя датами
Es72
Дата: Пятница, 29.07.2016, 09:14 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Уважаемые форумчане, помогите пожалуйста решить задачу по подсчету дней недели между двумя датами с помощью формул. Сложность задачи в том, что дни недели и даты уже забиты в конкретном формате, пример файла excel 2010 в приложении. Еще не указан конкретный год, так как в зависимости от него количество дней недели тоже может отличаться между датами, нужно учесть возможность его учесть. Еще более сложный (для меня) вариант задачи - это возможность разбить подсчет дней недели помесячно, формат данных тот же, пример приложен. Буду признателен за решения и просто идеи, как это можно сделать.
Уважаемые форумчане, помогите пожалуйста решить задачу по подсчету дней недели между двумя датами с помощью формул. Сложность задачи в том, что дни недели и даты уже забиты в конкретном формате, пример файла excel 2010 в приложении. Еще не указан конкретный год, так как в зависимости от него количество дней недели тоже может отличаться между датами, нужно учесть возможность его учесть. Еще более сложный (для меня) вариант задачи - это возможность разбить подсчет дней недели помесячно, формат данных тот же, пример приложен. Буду признателен за решения и просто идеи, как это можно сделать. Es72
Ответить
Сообщение Уважаемые форумчане, помогите пожалуйста решить задачу по подсчету дней недели между двумя датами с помощью формул. Сложность задачи в том, что дни недели и даты уже забиты в конкретном формате, пример файла excel 2010 в приложении. Еще не указан конкретный год, так как в зависимости от него количество дней недели тоже может отличаться между датами, нужно учесть возможность его учесть. Еще более сложный (для меня) вариант задачи - это возможность разбить подсчет дней недели помесячно, формат данных тот же, пример приложен. Буду признателен за решения и просто идеи, как это можно сделать. Автор - Es72 Дата добавления - 29.07.2016 в 09:14
китин
Дата: Пятница, 29.07.2016, 09:47 |
Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация:
1073
±
Замечаний:
0% ±
Excel 2007;2010;2016
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Ответить
abtextime
Дата: Пятница, 29.07.2016, 09:53 |
Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация:
117
±
Замечаний:
0% ±
Excel 2010
Пока формула для всех дней неделиКод
=ДАТА(2016;(НАЙТИ(ПРАВБ(C4;3);"JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC")+2)/3;ЛЕВБ(C4;2))-ДАТА(2016;(НАЙТИ(ПРАВБ(B4;3);"JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC")+2)/3;ЛЕВБ(B4;2))+1
По остальной части задачи мэтры дополнят, мне пока некогда
Пока формула для всех дней неделиКод
=ДАТА(2016;(НАЙТИ(ПРАВБ(C4;3);"JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC")+2)/3;ЛЕВБ(C4;2))-ДАТА(2016;(НАЙТИ(ПРАВБ(B4;3);"JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC")+2)/3;ЛЕВБ(B4;2))+1
По остальной части задачи мэтры дополнят, мне пока некогда abtextime
Ответить
Сообщение Пока формула для всех дней неделиКод
=ДАТА(2016;(НАЙТИ(ПРАВБ(C4;3);"JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC")+2)/3;ЛЕВБ(C4;2))-ДАТА(2016;(НАЙТИ(ПРАВБ(B4;3);"JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC")+2)/3;ЛЕВБ(B4;2))+1
По остальной части задачи мэтры дополнят, мне пока некогда Автор - abtextime Дата добавления - 29.07.2016 в 09:53
Es72
Дата: Пятница, 29.07.2016, 10:02 |
Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Пока формула для всех дней недели
Эта формула считает все дни недели между датами, а нужно в зависимости от условия в столбце А
Пока формула для всех дней недели
Эта формула считает все дни недели между датами, а нужно в зависимости от условия в столбце АEs72
Ответить
Сообщение Пока формула для всех дней недели
Эта формула считает все дни недели между датами, а нужно в зависимости от условия в столбце ААвтор - Es72 Дата добавления - 29.07.2016 в 10:02
abtextime
Дата: Пятница, 29.07.2016, 10:09 |
Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация:
117
±
Замечаний:
0% ±
Excel 2010
Es72 , а я что написал?Пока формула для всех дней недели
Не торопитесь, коллега )
Es72 , а я что написал?Пока формула для всех дней недели
Не торопитесь, коллега )abtextime
Ответить
Сообщение Es72 , а я что написал?Пока формула для всех дней недели
Не торопитесь, коллега )Автор - abtextime Дата добавления - 29.07.2016 в 10:09
AlexM
Дата: Пятница, 29.07.2016, 10:24 |
Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4480
Репутация:
1114
±
Замечаний:
0% ±
Excel 2003
Формула для первой задачиКод
=СУММПРОИЗВ(--ЕЧИСЛО(ПОИСК(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;--(ЛЕВБ(B4;2)&-ПОИСК(ПСТР(B4;4;2);" anebarprayunulugepctovec")/2)):ИНДЕКС(A:A;--(ЛЕВБ(C4;2)&-ПОИСК(ПСТР(C4;4;2);" anebarprayunulugepctovec")/2))));A4)))
В столбце А убрал точки
Формула для первой задачиКод
=СУММПРОИЗВ(--ЕЧИСЛО(ПОИСК(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;--(ЛЕВБ(B4;2)&-ПОИСК(ПСТР(B4;4;2);" anebarprayunulugepctovec")/2)):ИНДЕКС(A:A;--(ЛЕВБ(C4;2)&-ПОИСК(ПСТР(C4;4;2);" anebarprayunulugepctovec")/2))));A4)))
В столбце А убрал точки AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Пятница, 29.07.2016, 10:25
Ответить
Сообщение Формула для первой задачиКод
=СУММПРОИЗВ(--ЕЧИСЛО(ПОИСК(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;--(ЛЕВБ(B4;2)&-ПОИСК(ПСТР(B4;4;2);" anebarprayunulugepctovec")/2)):ИНДЕКС(A:A;--(ЛЕВБ(C4;2)&-ПОИСК(ПСТР(C4;4;2);" anebarprayunulugepctovec")/2))));A4)))
В столбце А убрал точки Автор - AlexM Дата добавления - 29.07.2016 в 10:24
AlexM
Дата: Пятница, 29.07.2016, 10:40 |
Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4480
Репутация:
1114
±
Замечаний:
0% ±
Excel 2003
abtextime , аналог вашей формулыКод
=СУММПРОИЗВ((ЛЕВБ(B4:C4;2)&-ПОИСК(ПСТР(B4:C4;4;2);" anebarprayunulugepctovec")/2)*{-1;1})+1
abtextime , аналог вашей формулыКод
=СУММПРОИЗВ((ЛЕВБ(B4:C4;2)&-ПОИСК(ПСТР(B4:C4;4;2);" anebarprayunulugepctovec")/2)*{-1;1})+1
AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Ответить
Сообщение abtextime , аналог вашей формулыКод
=СУММПРОИЗВ((ЛЕВБ(B4:C4;2)&-ПОИСК(ПСТР(B4:C4;4;2);" anebarprayunulugepctovec")/2)*{-1;1})+1
Автор - AlexM Дата добавления - 29.07.2016 в 10:40
Es72
Дата: Пятница, 29.07.2016, 10:50 |
Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Спасибо, работает для первой задачи. А что значит вот этот набор букв, можете пояснить:" anebarprayunulugepctovec"
Спасибо, работает для первой задачи. А что значит вот этот набор букв, можете пояснить:" anebarprayunulugepctovec"
Es72
Ответить
Сообщение Спасибо, работает для первой задачи. А что значит вот этот набор букв, можете пояснить:" anebarprayunulugepctovec"
Автор - Es72 Дата добавления - 29.07.2016 в 10:50
AlexM
Дата: Пятница, 29.07.2016, 11:19 |
Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4480
Репутация:
1114
±
Замечаний:
0% ±
Excel 2003
Это вторая и третья буква названий всех месяцев
Это вторая и третья буква названий всех месяцев AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Ответить
Сообщение Это вторая и третья буква названий всех месяцев Автор - AlexM Дата добавления - 29.07.2016 в 11:19
abtextime
Дата: Пятница, 29.07.2016, 11:22 |
Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация:
117
±
Замечаний:
0% ±
Excel 2010
Решение через UDF. Признак отсутствия дня недели - точка в позиции дня (т.е. можно вместо ..3.5.. писать ..*.*..) [vba]Код
Public Function Dni(D1, D2 As Date, N As Integer) As Long For D = D1 To D2 If Weekday(D, vbMonday) = N Then Dni = Dni + 1 Next D End Function Public Function DniStr(D1, D2 As Date, S As String) As Long Dim i As Integer For i = 1 To 7 If Mid(S, i, 1) <> "." Then DniStr = DniStr + Dni(D1, D2, i) Next i End Function
[/vba]
Решение через UDF. Признак отсутствия дня недели - точка в позиции дня (т.е. можно вместо ..3.5.. писать ..*.*..) [vba]Код
Public Function Dni(D1, D2 As Date, N As Integer) As Long For D = D1 To D2 If Weekday(D, vbMonday) = N Then Dni = Dni + 1 Next D End Function Public Function DniStr(D1, D2 As Date, S As String) As Long Dim i As Integer For i = 1 To 7 If Mid(S, i, 1) <> "." Then DniStr = DniStr + Dni(D1, D2, i) Next i End Function
[/vba] abtextime
Сообщение отредактировал abtextime - Пятница, 29.07.2016, 11:23
Ответить
Сообщение Решение через UDF. Признак отсутствия дня недели - точка в позиции дня (т.е. можно вместо ..3.5.. писать ..*.*..) [vba]Код
Public Function Dni(D1, D2 As Date, N As Integer) As Long For D = D1 To D2 If Weekday(D, vbMonday) = N Then Dni = Dni + 1 Next D End Function Public Function DniStr(D1, D2 As Date, S As String) As Long Dim i As Integer For i = 1 To 7 If Mid(S, i, 1) <> "." Then DniStr = DniStr + Dni(D1, D2, i) Next i End Function
[/vba] Автор - abtextime Дата добавления - 29.07.2016 в 11:22
_Boroda_
Дата: Пятница, 29.07.2016, 11:56 |
Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация:
6479
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Не спешите. Введите вот так 1.34..7 28JUL 29JUL четверг и пятница У ДЕНЬНЕД про второй аргумент не забыли? Ну, поправить-то там несложно: /2)));2 );A8))) У меня еще вариант формулой массива (ввод одновременным нажатием Контрл Шифт Ентер). Ну и конечно же с моим любимым ТЕКСТом (специально для Игоря)Код
=СЧЁТ(ПОИСК(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;ПОИСКПОЗ(B4;ТЕКСТ(СТРОКА($1:$367);"[$-6]ДДМММ");)):ИНДЕКС(A:A;ПОИСКПОЗ(C4;ТЕКСТ(СТРОКА($1:$367);"[$-6]ДДМММ");)))+"1/1"-2);A4))
Но здесь еще засада - в 2016 году 366 дней, в 1900 году в Excel ошибочно тоже 366 дней, поэтому все работает. А вот для 2017 года будет косяк с 29 февраля. Тогда по идее должна работать такая формула (проверить сейчас не могу - изменить системную дату на компе могу только дома, на работе запрет безопасности)Код
=СЧЁТ(ПОИСК(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;ПОИСКПОЗ(B4;ТЕКСТ(СТРОКА($1:$368);"[$-6]ДДМММ");)+"1/1"-1):ИНДЕКС(A:A;ПОИСКПОЗ(C4;ТЕКСТ(СТРОКА($1:$368)+"1/1"-1;"[$-6]ДДМММ");)+"1/1"-1));2);A4))
Ну и для первого вопроса вот такой вариант ещеКод
=СУММ(ПОИСКПОЗ(B4:C4;ТЕКСТ(СТРОКА($1:$367)+"1/1"-1;"[$-6]ДДМММ");)*{-1;1})+1
Не спешите. Введите вот так 1.34..7 28JUL 29JUL четверг и пятница У ДЕНЬНЕД про второй аргумент не забыли? Ну, поправить-то там несложно: /2)));2 );A8))) У меня еще вариант формулой массива (ввод одновременным нажатием Контрл Шифт Ентер). Ну и конечно же с моим любимым ТЕКСТом (специально для Игоря)Код
=СЧЁТ(ПОИСК(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;ПОИСКПОЗ(B4;ТЕКСТ(СТРОКА($1:$367);"[$-6]ДДМММ");)):ИНДЕКС(A:A;ПОИСКПОЗ(C4;ТЕКСТ(СТРОКА($1:$367);"[$-6]ДДМММ");)))+"1/1"-2);A4))
Но здесь еще засада - в 2016 году 366 дней, в 1900 году в Excel ошибочно тоже 366 дней, поэтому все работает. А вот для 2017 года будет косяк с 29 февраля. Тогда по идее должна работать такая формула (проверить сейчас не могу - изменить системную дату на компе могу только дома, на работе запрет безопасности)Код
=СЧЁТ(ПОИСК(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;ПОИСКПОЗ(B4;ТЕКСТ(СТРОКА($1:$368);"[$-6]ДДМММ");)+"1/1"-1):ИНДЕКС(A:A;ПОИСКПОЗ(C4;ТЕКСТ(СТРОКА($1:$368)+"1/1"-1;"[$-6]ДДМММ");)+"1/1"-1));2);A4))
Ну и для первого вопроса вот такой вариант ещеКод
=СУММ(ПОИСКПОЗ(B4:C4;ТЕКСТ(СТРОКА($1:$367)+"1/1"-1;"[$-6]ДДМММ");)*{-1;1})+1
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Не спешите. Введите вот так 1.34..7 28JUL 29JUL четверг и пятница У ДЕНЬНЕД про второй аргумент не забыли? Ну, поправить-то там несложно: /2)));2 );A8))) У меня еще вариант формулой массива (ввод одновременным нажатием Контрл Шифт Ентер). Ну и конечно же с моим любимым ТЕКСТом (специально для Игоря)Код
=СЧЁТ(ПОИСК(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;ПОИСКПОЗ(B4;ТЕКСТ(СТРОКА($1:$367);"[$-6]ДДМММ");)):ИНДЕКС(A:A;ПОИСКПОЗ(C4;ТЕКСТ(СТРОКА($1:$367);"[$-6]ДДМММ");)))+"1/1"-2);A4))
Но здесь еще засада - в 2016 году 366 дней, в 1900 году в Excel ошибочно тоже 366 дней, поэтому все работает. А вот для 2017 года будет косяк с 29 февраля. Тогда по идее должна работать такая формула (проверить сейчас не могу - изменить системную дату на компе могу только дома, на работе запрет безопасности)Код
=СЧЁТ(ПОИСК(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;ПОИСКПОЗ(B4;ТЕКСТ(СТРОКА($1:$368);"[$-6]ДДМММ");)+"1/1"-1):ИНДЕКС(A:A;ПОИСКПОЗ(C4;ТЕКСТ(СТРОКА($1:$368)+"1/1"-1;"[$-6]ДДМММ");)+"1/1"-1));2);A4))
Ну и для первого вопроса вот такой вариант ещеКод
=СУММ(ПОИСКПОЗ(B4:C4;ТЕКСТ(СТРОКА($1:$367)+"1/1"-1;"[$-6]ДДМММ");)*{-1;1})+1
Автор - _Boroda_ Дата добавления - 29.07.2016 в 11:56
AlexM
Дата: Пятница, 29.07.2016, 13:26 |
Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4480
Репутация:
1114
±
Замечаний:
0% ±
Excel 2003
У ДЕНЬНЕД про второй аргумент не забыли
Моя ошибочка. Александр, спасибо.
У ДЕНЬНЕД про второй аргумент не забыли
Моя ошибочка. Александр, спасибо.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Ответить
Сообщение У ДЕНЬНЕД про второй аргумент не забыли
Моя ошибочка. Александр, спасибо.Автор - AlexM Дата добавления - 29.07.2016 в 13:26