33

Учитывая дату, как я могу получить день недели (например, "понедельник") в ячейку в Excel?

9 ответов9

54

Простой пример:

A1 ячейка: 08.01.2009
Ячейка B1: = TEXT(WEEKDAY(A1), "dddd")

Для данной даты будет напечатан соответствующий день.

Это то, что вы хотели?

19

Ответ, приведенный выше, работает только по счастливой случайности, потому что Excel считает, что 01.01.1900 было воскресеньем *, и по умолчанию Excel использует первый день недели в качестве функции недели.

То, что вы на самом деле вычисляете в этом методе, это день недели как число, затем форматирование его как дня на основе этого числа, интерпретируемого как дата. Например, если ваша дата 1/2/2003 и вы используете функцию WEEKDAY, это приводит к 7 (= суббота). Когда вы затем форматируете это как "dddd", вы фактически получаете название дня 7-го дня в Excel с момента его "эпохи", то есть 1/19/1900, что является субботой *. Эта формула сломается, если кто-то откроет ее, выбрав опцию для использования системы дат 1904 года, поскольку 01.01.1904 было не воскресенье, а пятница. (да, я знаю, что вряд ли кто-то использует это, но вы не хотите создавать решение, которое опирается на это, не так ли?)

Вы можете сделать формулу короче, быстрее и надежнее, просто используя

=TEXT(A1,"dddd")

Конечно, вы можете просто отформатировать сами ячейки даты с помощью пользовательского формата, как уже предлагалось, в зависимости от того, действительно ли вам это нужно в отдельном столбце или нет. Я часто использую форматы даты, такие как

ddd dd mmm yyyy

например, суббота 01 февраля 2003 г., поэтому дата является явной, но также указывается название дня недели.

Использование второго столбца и функции TEXT очень важно, если вы хотите явно использовать день недели где-нибудь в почтовом слиянии (например), аналогично для таких вещей, как валюты и т.д. В Excel> Слияние Word передает фактическое базовое хранимое значение, а не версия отформатирована на экране, поэтому, независимо от формата ячейки, Word видит какое-то ужасное число. Истинное текстовое поле передается «как есть» и правильно отображается в Word.

* на самом деле это понедельник, но Excel был написан так, чтобы соответствовать неправильным датам в Lotus 1-2-3, которые рассматривали 1900 год как високосный год, когда это не так.

7

Другая возможность, в зависимости от того, что вы хотите сделать с датой позже, - установить формат ячейки в Custom: dddd.

5

Я обнаружил, что вложенные операторы IF могут быть громоздкими, но это работает. Однако, если вы хотите сэкономить немного времени на печать, вы можете попробовать это:

=CHOOSE(WEEKDAY(A2), "Sun","Mon","Tue","Wed","Thur","Fri","Sat")

Или, если вам нужны полные имена:

=CHOOSE(WEEKDAY(A2), "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")

В этом примере "A2" может быть любой ячейкой (или формулой), содержащей указанную дату. Например:

=CHOOSE(WEEKDAY(TODAY()), "Sun","Mon","Tue","Wed","Thur","Fri","Sat") 

напечатал бы трехбуквенное сокращение для того, что сегодня есть.

1

Вы также можете локализовать ответ, используя [$ nnn] перед форматом (поэтому пользовательский код: [$ nnn] dddd; @). измените nnn с правильным языковым кодом. у меня нет списка, но почему-то английский код -409 (а мой местный -421).

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

1

Ячейка A1: 08.01.2009. Ячейка B1: = A1, затем нажмите Ctrl +1 (ячейка формата), выберите вкладку номера, нажмите "Custom", затем введите "DDDD" в поле типа txtbox.

0

Отображает текущую дату

=TEXT(WEEKDAY(MONTH(TODAY())),"dddd")  

Отображает текущую дату с требуемым обязательным текстом.

=CHOOSE(WEEKDAY(MONTH(TODAY())), "S-U-N-D-A-Y","M-O-N-D-A-Y","T-U-E-S-D-A-Y","W-E-D-N-E-S-D-A-Y","T-H-R-S-D-A-Y","F-R-I-D-A-Y","S-A-T-U-R-D-A-Y")
0

Ячейки формата - Дата - Тип календаря (выберите григорианский английский) - Тип (в разделе указан необходимый формат среда, 14 марта 2001 г.)

0

Функция WEEKDAY может использоваться в кодах Vba. Например :

Label1.Caption = WeekdayName(Weekday(TextBox1, 0), False, 0)

Название дня получено из TextBox1 в приведенном выше примере. Результат "понедельник" .

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

Шаблон можно посмотреть здесь

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .