Работа Раймонда требует, чтобы он отформатировал даты так, чтобы они отображались в том, что, по его мнению, является довольно странным. Если, например, ячейка содержит дату 20.10.19, ему нужно, чтобы она отображалась как «SU 10/20» без кавычек. (SU — это двухсимвольное представление дня недели, в данном случае воскресенье.) Раймонд задается вопросом, есть ли способ сделать это в виде, возможно, специального формата.

Невозможно сделать это с помощью специального формата. Причина в том, что в настраиваемых форматах нет кода, позволяющего создать двухсимвольный день недели. Самое близкое, что можно сделать в настраиваемом формате, — это трехзначный день недели:

ddd m/d

Но даже это немного не так, потому что трехзначный день недели не будет отображаться в верхнем регистре.

Итак, это приводит нас к использованию формулы для получения отформатированной даты.

Если у вас есть дата в ячейке A1, вы можете использовать следующую формулу:

=LEFT(UPPER(TEXT(A1,"ddd")), 2) & " " & TEXT(A1,"m/d")

При этом функция ТЕКСТ используется для возврата, во-первых, трехзначного дня недели, который преобразуется в верхний регистр с помощью формулы ВВЕРХ. Затем функция LEFT используется для захвата первых двух символов этого дня недели, которые затем добавляются к комбинации месяц / день. Это возвращает именно то, что хотел Раймонд.

Обратной стороной этого подхода является то, что дата, возвращаемая формулой, является текстом; это не настоящая дата. Если бы мы могли использовать настраиваемый формат, базовое значение даты не изменилось бы.

Тем не менее, это может быть случай любого нечетного форматирования даты, подобного этому.

Из-за этого потенциального недостатка вы можете захотеть сохранить фактические даты как даты, даже если они находятся в скрытом столбце или на скрытом листе.

Вы также можете, если хотите, создать макрос, который будет возвращать строку с форматированной датой. Вот простая пользовательская функция:

Function FmtDate(d As Date) As String     Dim s As String

s = UCase(Left(WeekdayName(Weekday(d)), 2))

s = s & " " & Format(d, "m/d")

FmtDate = s End Sub

Затем вы можете использовать эту функцию на своем листе следующим образом:

=FmtDate(A1)

Предполагается, что дата находится в формате A1, а функция возвращает строку даты, отформатированную по желанию Раймонда.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (13704) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.