Показать номер недели в году в произвольном формате - PullRequest
0 голосов
/ 02 марта 2020

Мне интересно, есть ли какой-нибудь пользовательский формат даты (Excel или VBA), который показывает номер недели (года) в дате.

Вот, чтобы уточнить, что я имею в виду: Предположим,

A1 = "02/03/2020  13:19:57" 

У меня есть этот пользовательский формат на A1:

[$-en-US]ddd, mmm dd, hh:mm

Результат:

Mon, Mar 02, 13:19 

Так что я хотел бы иметь номер недели в конце:

Mon, Mar 02, 13:19, 10

Кстати, чтобы остаться в качестве даты, нужно указать «A1»

Ценить любую помощь.

Решено Благодаря @ FaneDuru

WeekNum = WorksheetFunction.WeekNum(ActiveCell, vbMonday)
With ActiveCell
    .NumberFormat = "[$-en-US]ddd, mmm dd, hh:mm" & """, W" & WeekNum & """"
    Debug.Print "Week num: " & WorksheetFunction.WeekNum(.Value)
    Debug.Print Year(.Value)
End With

1 Ответ

1 голос
/ 02 марта 2020

Попробуйте следующий код, пожалуйста. Это останется форматом данных, но номер недели будет чем-то построен. Его можно извлечь из даты ...

Sub testNumberFormatSpec()
  With ActiveCell
    .Formula = "=Now()"
    .NumberFormat = "ddd, mmm dd, hh:mm"" Week " & _
       WorksheetFunction.WeekNum(ActiveCell.value, vbMonday) & """"
     Debug.Print "Week num: " & WorksheetFunction.WeekNum(.value)
     Debug.Print Year(.value)
  End With
End Sub

Что я пытался предложить, так это тот факт, что этот формат нельзя просто заполнить для других ячеек. Он должен быть построен с использованием приведенного выше кода. Номер недели добавляется в виде строки в конце формата даты. Его можно извлечь из существующего значения даты, но нельзя применять как формат к другому диапазону. Фактически, код может быть введен в событие Worksheet_Change, чтобы адаптировать формат каждой измененной ячейки ... Конечно, в ранее определенном диапазоне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...