и всй было хорошо, пока не оказалось, что для америки надо WEEKDAY(B13,3)+6 заменить на WEEKDAY(B13,3)+5, а для Израиля WEEKDAY(B13,3)+4 что то у меня уже перегрев процессора, прошу помощи зала, можт формулу как то можно переписать, или подскажите как такой коэфициэнт макросом подобрать примерчик прилагаю, формула в столбце L
Читайте HKEY_CURRENT_USER\Control Panel\International\iFirstDayOfWeek 0 - понедельник 6- воскресенье Естесвенно макросом. К слову, может менять надо не 6 в WEEKDAY(B13,3)+6, а 3?
Или я е правильно понял и надо автоматом учеть на разных листах независимо от региональных настроек?
Мне кажется, что если приложение (любое) предназначено для конкретной страны, то мы не должны рассчитывать, что 100% пользователей будут иметь соответствующие региональные настройки.
=IF(B13=(B13-WEEKDAY(B13,3)+6),SUMIFS(I7:I13,B7:B13,"<="&B13,B7:B13,">="&B13-6),"") я б заменил на
UDF
Код
Function GetLocalFirstDayOfWeek() As Integer
GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"). _
GetStringValue &H80000001, "Control Panel\International", "iFirstDayOfWeek", GetLocalFirstDayOfWeek
End Function
или
Код
Function GetLocalFirstDayOfWeek() As Integer
GetLocalFirstDayOfWeek = CreateObject("WScript.Shell"). _
RegRead("HKEY_CURRENT_USER\Control Panel\International\iFirstDayOfWeek")
End Function
И =IF(B13=(B13-WEEKDAY(B13,11+GetLocalFirstDayOfWeek())+5, SUMIFS(I7:I13,B7:B13,"<="&B13,B7:B13,">="&B13-6),"")
Соглашусь, что если это будет отчет, то при одинаковых исходных будет разный результат, и чтоб этого небыло надо делать отдельный параметр настраиваемый для конкретной страны, что тоже не сложно.
Уважаемый БМВ, я согласен с #5 - собственно, мое сообщение было адресовано автору темы. Любопытный факт - функция VBA Weekday. в отличие от своего тезки - метода WorksheetFunction.Weekday знакома с региональными настройками. Тело Вашей функции из #5 можно записать и по-новогоднему:
sokol92, то что ТС было адресовано, я понял. А я не люблю подобные #12/31/2017# константы в коде , толь дело по реестру пошарится:-), но в целом поддерживаю вариант с заменой на 1