Как записать имя дня в ячейку в Excel?
Учитывая дату, как занести день недели (например, “понедельник”) в ячейку в Excel?
Учитывая дату, как занести день недели (например, “понедельник”) в ячейку в Excel?
Ответ, приведенный выше, работает только по счастливой случайности, потому что Excel считает, что 1/1/1900 был Sunday*, и по умолчанию Excel использует воскресенье как первый день недели для функции “День недели”.
То, что вы вычисляется в этом методе - это день недели как число, а затем форматируется как день, основанный на этом числе, интерпретируемом как дата. Eg если ваша дата 1/2/2003 и вы используете функцию ЕЖЕНЕДЕЛЬНАЯ ДЕНЬ, то в результате получится 7 (=Суббота). Когда вы затем форматируете это как “dddd”, вы на самом деле получаете название дня 7-го дня в Excel с его “эпохи”, т.е. 7/1/1900, который случайно оказался Saturday*. Эта формула сломается, если кто-то откроет ее, у кого есть возможность использовать систему дат 1904 года, так как 1/1/1904 был не воскресенье, а пятница. (Да, я знаю, что вряд ли кто-то использует эту формулу, но вы не хотите строить решение, которое полагается на это, не так ли?).
Вы можете сделать формулу короче, быстрее и прочнее, просто используя
=TEXT(A1,"dddd")
Вы, конечно, можете просто отформатировать сами ячейки даты в пользовательском формате, как уже предлагалось, в зависимости от того, действительно ли вам это нужно в отдельном столбце или нет. Я часто использую форматы даты, такие как 0x2 и 0x2 и 0x1 и 0x2 и 0x2 и , чтобы дать, например, Sat 01 Feb 2003 так что дата является явным, но показывает название дня недели, а также.
Использование второго столбца и функции TEXT необходимо, если вы хотите явно использовать день недели где-то в почтовом слиянии (например), аналогично для таких вещей, как валюты и т.д. в Excel > Слияние Word передает фактическое значение, лежащее в основе, а не на экране отформатированную версию, так что независимо от формата ячейки, Word видит какое-то ужасное число. Истинное текстовое поле передается “как есть” и корректно отображается в Word.
* на самом деле это понедельник, но Excel был написан для соответствия неправильным датам в Лотосе 1-2-3, который рассматривал 1900 год как високосный год, когда это не так.
Я обнаружил, что вложение 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: 1/8/2009 B1 ячейка: =A1, затем нажмите ctrl+1 (ячейка форматирования), выберите номер вкладки, нажмите пользовательские, затем введите “DDDD” в текстовом поле типа.
Вы также можете локализовать ответ, используя [$nnn] перед форматом (так что пользовательский код: [$nnn]dddd;@). измените nnn с помощью правильного кода языка. У меня нет списка, но почему-то английский код -409 (а мой локальный -421).
я думаю, что вы можете поэкспериментировать с форматом Number, изменить языковое поле, а затем изменить его обратно на пользовательский формат.
Отображает текущую дату
=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")
Функция Еженедельного дня может быть использована в Vba-кодах . Например :
Label1.Caption = WeekdayName(Weekday(TextBox1, 0), False, 0)
Имя дня получено из TextBox1 в приведенном выше примере. Результат - “Понедельник ”.
Я использовал эту функцию при создании пользовательской формы о вводе даты в активную ячейку с помощью меню правой кнопки мыши. Шаблон можно посмотреть здесь