Как я могу получить название дня в ячейку в Excel?


33

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


4
Ну, вы могли бы ввести понедельник в клетку с помощью клавиатуры ... но я думаю, что вы имеете в виду что-то другое.
Майк Купер

Ах да: о) Я действительно мог бы напечатать это. Я обновлю вопрос, чтобы сделать его более конкретным
Дон Винс

Ответы:


54

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

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

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

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


Большое спасибо! Небольшая опечатка: в середине точка с запятой, которая должна быть запятой.
Дон Винс

@ Дон Винс - Упс, извините за это.
Ладья

2
Точка с запятой требуется в локализациях (Региональные настройки в Windows), которые используют запятую для десятичного разделителя. Как и в языках, где английский 1 000,00 (одна тысяча) будет записан как 1 000,00 и, следовательно, будет введен как 1000,00 в Excel. Я действительно думал, что точка с запятой всегда была принята, но я могу ошибаться в этом.
Арджан

милости просим :) и правильный ответ заслуживает повышения +1

4
Это работает только из-за странности воскресенья 01.01.1900. Полностью потерять функцию дня недели, просто используйте = TEXT (A1, "dddd") (см. Мой полный ответ ниже)
AdamV

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 год считался високосным, а это не так.


Я уже проголосовал за него до вашего редактирования. Теперь это еще лучше.
Йерун Wiert Pluimers

7

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


Superb! Это помогает, и отлично подходит для ситуации, когда вы не хотите использовать другой столбец. Спасибо
Дон Винс

Даже если вы хотите использовать другой столбец, вы можете сделать это и просто ввести формулу, как =A1в примере из первого ответа.
Арджан

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
Добро пожаловать в SuperUser. Ответы всегда должны быть самодостаточными, поэтому, пожалуйста, разверните свой ответ в рабочем примере. Кроме того, мы не знаем, откуда вы родом, поэтому мой местный район немного не конкретен.
Тим

1

Ячейка А1: 08.01.2009 Ячейка В1: = А1, затем нажмите Ctrl + 1 (ячейка формата), выберите вкладку номера, нажмите «Выборочная», затем введите «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")

Это просто дублирование нескольких предыдущих ответов.
fixer1234

0

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


0

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

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

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

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

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


Предложение: что уникально в вашем ответе, часть, которая непосредственно отвечает на вопрос, это название дня недели, а не дня недели. Это термин, на котором нужно сосредоточиться в первом предложении.
fixer1234 30.11.16
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.