Учитывая дату, как я могу получить день недели (например, «понедельник») в ячейку в Excel?
Учитывая дату, как я могу получить день недели (например, «понедельник») в ячейку в Excel?
Ответы:
Простой пример:
Ячейка A1: 08.01.2009
Ячейка B1: = TEXT (WEEKDAY (A1), "dddd")
Для данной даты будет напечатан соответствующий день.
Это то, что вы хотели?
Ответ, приведенный выше, работает только по счастливой случайности, потому что 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 год считался високосным, а это не так.
Другая возможность, в зависимости от того, что вы хотите сделать с датой позже, - установить формат ячейки в Custom: dddd.
=A1
в примере из первого ответа.
Я обнаружил, что вложенные 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")
напечатал бы трехбуквенное сокращение для того, что сегодня есть.
Вы также можете локализовать ответ, используя [$ nnn] перед форматом (поэтому пользовательский код: [$ nnn] dddd; @). измените nnn с правильным языковым кодом. у меня нет списка, но почему-то английский код -409 (а мой местный -421).
Я думаю, что вы можете поэкспериментировать с форматом чисел, изменить поле языка, а затем изменить его обратно на пользовательский формат.
Ячейка А1: 08.01.2009 Ячейка В1: = А1, затем нажмите Ctrl + 1 (ячейка формата), выберите вкладку номера, нажмите «Выборочная», затем введите «DDDD» в поле типа txtbox
Отображает текущую дату
=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")
Функция WEEKDAY может использоваться в кодах Vba. Например :
Label1.Caption = WeekdayName(Weekday(TextBox1, 0), False, 0)
Название дня получено из TextBox1 в приведенном выше примере. Результат "понедельник" .
Я использовал эту функцию, когда создавал пользовательскую форму для ввода даты в активную ячейку с контекстным меню.