Страницы: 1
RSS
Количество понедельников и воскресений в месяце
 
Доброго всем дня!!!  
Никак не соображу, как найти количество некоторого дня недели за весь месяц?  
Подскажите пожалуйста.
 
макросом?
 
http://www.planetaexcel.ru/forum.php?thread_id=20004
 
Sub test()  
   For r = 2 To 5  
       kol = 0  
       For d = Cells(r, 1) To WorksheetFunction.EDate(Cells(r, 1), 1) - 1  
           If Weekday(d, 2) = 7 Or Weekday(d, 2) = 1 Then  
               kol = kol + 1  
           End If  
           Cells(r, 3) = kol  
       Next d  
   Next  
End Sub
 
Спасибо!  
Но хотелось бы формулой.  
Моя не работает  
=СУММ(ЕСЛИ(ДЕНЬНЕД(A2:(A2+ЗНАЧЕН(ТЕКСТ(КОНМЕСЯЦА(A2;0);"ДД")));2)=1;1;0))+СУММ(ЕСЛИ(ДЕНЬНЕД(A2:(A2+ЗНАЧЕН(ТЕКСТ(КОНМЕСЯЦА(A2;0);"ДД")));2)=7;1;0))  
 
И в голову ничего путного не лезет.
 
{quote}{login=}{date=12.10.2010 10:59}{thema=}{post}http://www.planetaexcel.ru/forum.php?thread_id=20004{/post}{/quote}  
По этой ссылке не совсем то.  
В той теме подсчитывают количество месяцев, у которых, например, 1 октября - пятница и т.п.
 
=СУММПРОИЗВ((ДЕНЬНЕД(ДАТА(2010;8;СТРОКА($A$1:ИНДЕКС(A:A;ДЕНЬ(ДАТА(2010;9;0))))))=СТРОКА(1:1))*1)  
вместо 2010 и 8 можно подставить ссылки; 9=8+1  
 
 
42042
 
Применительно к вашему файлу
 
Михаил, спасибо большое!  
Насколько я понял, если дата - первое число месяца, можно так:  
 
=СУММПРОИЗВ((ДЕНЬНЕД(ДАТА(ГОД(A2);МЕСЯЦ(A2);СТРОКА($A$1:ИНДЕКС(A:A;ДЕНЬ(ДАТАМЕС(A2;1)-1)))))={1;2})*1)  
 
А у Вас универсальный вариант, неважно, какая дата, главное её месяц и год.  
Круто! Выручили, благодарю!
 
заинтересовала тема..  
)  
может пригодится...  
немного не то, но все же  
=ОТБР((I80-I79)/7)+(ИЛИ(ДЕНЬНЕД(I79;2)=7;ДЕНЬНЕД(I80;2)=7))  
 
формулка определяет количество ВС между двумя датами    
в I79 - начальная дата, в I80 - конечная...  
 
может пригодицца )
 
Чуть переделал под свои нужды, в A1 дата и формула считает количество воскресений во всём месяце с этой датой:  
 
=ОТБР((ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0)-ДАТА(ГОД(A1);МЕСЯЦ(A1);1))/7)+(ИЛИ(ДЕНЬНЕД(ДАТА(ГОД(A1);МЕСЯЦ(A1);1);2)=7;ДЕНЬНЕД(ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0);2)=7))
 
__________
 
=СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(ИНДЕКС(A:A;A2):ИНДЕКС(A:A;КОНМЕСЯЦА(A2;0)));2)={1;7}))
 
=ОТБР(СУММ({-1:1}*(КОНМЕСЯЦА(A1;{-1:0})))/7+(ИЛИ(ДЕНЬНЕД(КОНМЕСЯЦА(A1;-1)+1)=1;ДЕНЬНЕД(КОНМЕСЯЦА(A1;0))=1)))  
Или массив:  
=СУММ(--(ДЕНЬНЕД(КОНМЕСЯЦА(A1;-1)+СТРОКА(A1:ИНДЕКС(A:A;СУММ({-1:1}*(КОНМЕСЯЦА(A1;{-1:0}))))))=1))
 
А не уточните как найти количестов отдельно всех дней в месяце?  
Пример  
начало месяца 01.10.2010  
и на выходе было:  
Пн-5  
Вт-4  
Ср-4  
Чт-4  
Пт-4  
Сб-5  
Вс-5
 
_____________
 
Спасибо
 
А как доработать чтобы вводился не месяц а интервал?  
т.е.  
дата начала интервала  
26,09,2011  
дата конца интрвала  
30,10,2011  
а на выходе получить    
все дни недели по 5
 
Так.
 
Спасибо, то, что нужно!
 
D1 - начало периода  
D2 - конец периода  
 
Option Explicit  
 
Private Sub KolDays()  
Dim i As Long  
Dim j As Long  
Dim n As Integer  
Dim a  
   a = Array("Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс")  
Range("D3:D9").ClearContents  
j = 0  
For i = CDate(Range("D1")) To CDate(Range("D2"))  
n = Weekday(Range("D1") + j, 2)  
   Select Case n  
       Case "1"  
   Cells(3, 4) = Cells(3, 4) + 1  
       Case "2"  
   Cells(4, 4) = Cells(4, 4) + 1  
       Case "3"  
   Cells(5, 4) = Cells(5, 4) + 1  
       Case "4"  
   Cells(6, 4) = Cells(6, 4) + 1  
       Case "5"  
   Cells(7, 4) = Cells(7, 4) + 1  
       Case "6"  
   Cells(8, 4) = Cells(8, 4) + 1  
       Case "7"  
   Cells(9, 4) = Cells(9, 4) + 1  
   End Select  
   j = j + 1  
Next i  
Cells(3, 3).Resize(UBound(a) + 1) = Application.Transpose(a)  
End Sub
Страницы: 1
Наверх