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

Вход

Регистрация

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

 

= Мир MS Excel/Подсчет дней недели между двумя датами - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Подсчет дней недели между двумя датами (Формулы/Formulas)
Подсчет дней недели между двумя датами
Es72 Дата: Пятница, 29.07.2016, 09:14 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Уважаемые форумчане, помогите пожалуйста решить задачу по подсчету дней недели между двумя датами с помощью формул.

Сложность задачи в том, что дни недели и даты уже забиты в конкретном формате, пример файла excel 2010 в приложении. Еще не указан конкретный год, так как в зависимости от него количество дней недели тоже может отличаться между датами, нужно учесть возможность его учесть.

Еще более сложный (для меня) вариант задачи - это возможность разбить подсчет дней недели помесячно, формат данных тот же, пример приложен.

Буду признателен за решения и просто идеи, как это можно сделать.
К сообщению приложен файл: dni_nd.xlsx(9Kb)
 
Ответить
СообщениеУважаемые форумчане, помогите пожалуйста решить задачу по подсчету дней недели между двумя датами с помощью формул.

Сложность задачи в том, что дни недели и даты уже забиты в конкретном формате, пример файла excel 2010 в приложении. Еще не указан конкретный год, так как в зависимости от него количество дней недели тоже может отличаться между датами, нужно учесть возможность его учесть.

Еще более сложный (для меня) вариант задачи - это возможность разбить подсчет дней недели помесячно, формат данных тот же, пример приложен.

Буду признателен за решения и просто идеи, как это можно сделать.

Автор - Es72
Дата добавления - 29.07.2016 в 09:14
китин Дата: Пятница, 29.07.2016, 09:47 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3433
Репутация: 544 ±
Замечаний: 0% ±

Excel 2007;Excel 2010


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
Сообщениеи тут тоже

Автор - китин
Дата добавления - 29.07.2016 в 09:47
abtextime Дата: Пятница, 29.07.2016, 09:53 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 427
Репутация: 60 ±
Замечаний: 0% ±

Excel 2010
Пока формула для всех дней недели

Код
=ДАТА(2016;(НАЙТИ(ПРАВБ(C4;3);"JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC")+2)/3;ЛЕВБ(C4;2))-ДАТА(2016;(НАЙТИ(ПРАВБ(B4;3);"JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC")+2)/3;ЛЕВБ(B4;2))+1


По остальной части задачи мэтры дополнят, мне пока некогда
К сообщению приложен файл: 6060365.xlsx(11Kb)
 
Ответить
СообщениеПока формула для всех дней недели

Код
=ДАТА(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
Дата добавления - 29.07.2016 в 10:02
abtextime Дата: Пятница, 29.07.2016, 10:09 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 427
Репутация: 60 ±
Замечаний: 0% ±

Excel 2010
Es72,

а я что написал?
Пока формула для всех дней недели


Не торопитесь, коллега )
 
Ответить
СообщениеEs72,

а я что написал?
Пока формула для всех дней недели


Не торопитесь, коллега )

Автор - abtextime
Дата добавления - 29.07.2016 в 10:09
AlexM Дата: Пятница, 29.07.2016, 10:24 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3053
Репутация: 740 ±
Замечаний: 0% ±

Формула для первой задачи
Код
=СУММПРОИЗВ(--ЕЧИСЛО(ПОИСК(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;--(ЛЕВБ(B4;2)&-ПОИСК(ПСТР(B4;4;2);" anebarprayunulugepctovec")/2)):ИНДЕКС(A:A;--(ЛЕВБ(C4;2)&-ПОИСК(ПСТР(C4;4;2);" anebarprayunulugepctovec")/2))));A4)))
В столбце А убрал точки
К сообщению приложен файл: dni_nd_01.xls(26Kb)


Номер мобильного модема (без голосовой связи)
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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3053
Репутация: 740 ±
Замечаний: 0% ±

abtextime, аналог вашей формулы
Код
=СУММПРОИЗВ((ЛЕВБ(B4:C4;2)&-ПОИСК(ПСТР(B4:C4;4;2);" anebarprayunulugepctovec")/2)*{-1;1})+1


Номер мобильного модема (без голосовой связи)
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
Дата добавления - 29.07.2016 в 10:50
AlexM Дата: Пятница, 29.07.2016, 11:19 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3053
Репутация: 740 ±
Замечаний: 0% ±

Это вторая и третья буква названий всех месяцев


Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЭто вторая и третья буква названий всех месяцев

Автор - AlexM
Дата добавления - 29.07.2016 в 11:19
abtextime Дата: Пятница, 29.07.2016, 11:22 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 427
Репутация: 60 ±
Замечаний: 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]
К сообщению приложен файл: dni_nd.xlsm(18Kb)


Сообщение отредактировал 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
Группа: Модераторы
Ранг: Экселист
Сообщений: 9367
Репутация: 3940 ±
Замечаний: 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
К сообщению приложен файл: dni_nd_1.xlsx(62Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3053
Репутация: 740 ±
Замечаний: 0% ±

У ДЕНЬНЕД про второй аргумент не забыли
Моя ошибочка. Александр, спасибо.


Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
У ДЕНЬНЕД про второй аргумент не забыли
Моя ошибочка. Александр, спасибо.

Автор - AlexM
Дата добавления - 29.07.2016 в 13:26
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Подсчет дней недели между двумя датами (Формулы/Formulas)
Страница 1 из 11
Поиск:

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