опять недели в разрезе текущей даты
Модератор: Naeel Maqsudov
как увязать в формулу:
1. получить текущую дату (например так: =сегодня() )
2. перевести в номер недели, на которую выпадает текущая дата (например из -17.05.2007 нужно получить 720, где 7год 20номер недели)
если не получается в формулу, то пускай выполняется макрос при открытии, а результат нужно при открытии же вписать в ячейку Ac6
PS я смог родить только такой вариант: =700+(НОМНЕДЕЛИ(СЕГОДНЯ();2))
но для работы формулы нужен пакет анализа/Analysis ToolPack VBA (не уверен какой именно)
К сожалению включить каждому потенциальному пользователю не получится. Желательно обойтись без них.
Кстати, если совсем нет вариантов, может можно запустить эти пакеты автоматом на доустановку на машине пользователя если они не стоят? И как?
=================================================================================================
Топик обновил в связи с актуальностью обратного конвертирования:
От номера недели к датеЕсть огромный лист. данные в котором состоят из номеров недель вида
701 год 2007 неделя 1
915 год 2009 неделя 15
1024 год 2010 неделя 24
Нужно в выделенном диапазоне ячеек все номера недель заменить
полноценными датами - четвергами указанных недель
1. получить текущую дату (например так: =сегодня() )
2. перевести в номер недели, на которую выпадает текущая дата (например из -17.05.2007 нужно получить 720, где 7год 20номер недели)
если не получается в формулу, то пускай выполняется макрос при открытии, а результат нужно при открытии же вписать в ячейку Ac6
PS я смог родить только такой вариант: =700+(НОМНЕДЕЛИ(СЕГОДНЯ();2))
но для работы формулы нужен пакет анализа/Analysis ToolPack VBA (не уверен какой именно)
К сожалению включить каждому потенциальному пользователю не получится. Желательно обойтись без них.
Кстати, если совсем нет вариантов, может можно запустить эти пакеты автоматом на доустановку на машине пользователя если они не стоят? И как?
=================================================================================================
Топик обновил в связи с актуальностью обратного конвертирования:
От номера недели к датеЕсть огромный лист. данные в котором состоят из номеров недель вида
701 год 2007 неделя 1
915 год 2009 неделя 15
1024 год 2010 неделя 24
Нужно в выделенном диапазоне ячеек все номера недель заменить
полноценными датами - четвергами указанных недель
может так ?
=ПРАВСИМВ(ГОД(СЕГОДНЯ());1)&НОМНЕДЕЛИ(СЕГОДНЯ())
и вы получите 720 для текущей недели (17/05/2007)
P.s. у вас должна быть подключена надстройка "Пакет анализа" (Сервис - Надстройки... - Пакет анализа)
=ПРАВСИМВ(ГОД(СЕГОДНЯ());1)&НОМНЕДЕЛИ(СЕГОДНЯ())
и вы получите 720 для текущей недели (17/05/2007)
P.s. у вас должна быть подключена надстройка "Пакет анализа" (Сервис - Надстройки... - Пакет анализа)
спасибо, ваш вариант мне больше нравится, только все же требуется пакет. в нем и есть камень преткновения. мне бы без доппакетов выкрутиться...
номнедели ...
смотрите ссылку на тему внизу, в разделе "похожие темы"
<как определить номер недели?>
смотрите ссылку на тему внизу, в разделе "похожие темы"
<как определить номер недели?>
Я вот переделал функцию из той темы, у мя получилось так, может автору поможет
а в ячейку AC6 введите "=myWeekNum()"
Код: Выделить всё
Function myWeekNum%()
myWeekNum% = DatePart("ww", Date, vbMonday)
End Function
последний рецепт оказался самым действенным
для полноты темы - аналог номнедели без пакета анализа:для работы формулы нужен пакет анализа
- Вложения
-
- NOMNEDELI.zip
- (37.51 КБ) 56 скачиваний
А не помогут ли знатоки сделать обратное:Avsha писал(а):для полноты темы - аналог номнедели без пакета анализа:
От номера недели к дате
Есть огромный лист. данные к котором состоят из номеров недель вида
701 год 2007 неделя 1
915 год 2009 неделя 15
1024 год 2010 неделя 24
Нужно в выделенном диапазоне ячеек все номера недель заменить
полноценными датами - четвергами указанных недель
Попробуйте так. Выделяем диапазон с числами, запускаем макрос, числа заменятся на даты четвергов.
Код: Выделить всё
Sub ДатыЧетверги()
Dim God As String, Ned As Integer, Дата As Date
Dim DN As Integer, poz As Range
Application.ScreenUpdating = False
For Each poz In Selection.Cells
God = "20" & Format(Mid(poz.Value, 1, Len(poz.Value) - 2), "0#")
Ned = CInt(Right(poz.Value, 2))
DN = Weekday("1/1/" & God, vbMonday)
Дата = DateAdd("ww", Ned - 1, "1/1/" & God) + 4 - DN
poz.Value = Дата
Next poz
Application.ScreenUpdating = True
End Sub
nilem писал(а):Попробуйте так. Выделяем диапазон с числами, запускаем макрос, числа заменятся на даты четвергов.Код: Выделить всё
Sub ДатыЧетверги() Dim God As String, Ned As Integer, Дата As Date Dim DN As Integer, poz As Range Application.ScreenUpdating = False For Each poz In Selection.Cells God = "20" & Format(Mid(poz.Value, 1, Len(poz.Value) - 2), "0#") Ned = CInt(Right(poz.Value, 2)) DN = Weekday("1/1/" & God, vbMonday) Дата = DateAdd("ww", Ned - 1, "1/1/" & God) + 4 - DN poz.Value = Дата Next poz Application.ScreenUpdating = True End Sub
Спасибо. почти то, что нужно. только промахиваемся на1 неделю - всегда заменяется на четверг неделей раньше