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

156042
Don Vince

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

33
Ну, вы могли бы ввести понедельник в клетку с помощью клавиатуры ... но я думаю, что вы имеете в виду что-то другое. Mike Cooper 15 лет назад 4
Ах да: о) Я действительно мог бы напечатать это. Я обновлю вопрос, чтобы сделать его более конкретным Don Vince 15 лет назад 0

9 ответов на вопрос

54
Rook

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

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

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

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

Большое спасибо! Небольшая опечатка: в середине точка с запятой, которая должна быть запятой. Don Vince 15 лет назад 0
@ Дон Винс - Упс, извините за это. Rook 15 лет назад 0
Точка с запятой требуется в локализациях (Региональные настройки в Windows), которые используют запятую для десятичного разделителя. Как и в языках, где английский 1 000,00 (одна тысяча) будет записан как 1 000,00 и, следовательно, будет введен как 1000,00 в Excel. Я действительно думал, что точка с запятой всегда была принята, но я могу ошибаться в этом. Arjan 15 лет назад 1
милости просим :) и правильный ответ заслуживает +1 15 лет назад 0
@ Арджан ван Бентем: По крайней мере, id не работает наоборот. Я использую немецкие настройки, и я всегда должен использовать точки с запятой. Lucas 15 лет назад 0
Это работает только из-за странности воскресенья 01.01.1900. Полностью потерять функцию дня недели, просто используйте = TEXT (A1, "dddd") (см. Мой полный ответ ниже) AdamV 15 лет назад 4
Более того, работает только с английской версией Excel. Немецкая версия - текст (WOCHENTAG (A1); «тттт»). В то время как Text - то же самое, и день недели переводится автоматически, обратите внимание на «tttt» вместо «dddd», который НЕ переводится автоматически. Quandary 10 лет назад 0
@Quandary Даже не используйте `WOCHENTAG ()` вообще ... просто используйте функцию `Text` непосредственно против значения. ErikE 8 лет назад 0
19
AdamV

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

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

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

Superb! Это помогает, и отлично подходит для ситуации, когда вы не хотите использовать другой столбец. Спасибо Don Vince 15 лет назад 0
Даже если вы хотите использовать другой столбец, вы можете сделать это и просто ввести формулу типа `= A1` в примере из первого ответа. Arjan 15 лет назад 0
5
Brad

I found that nesting IF statements can be cumbersome, but it does work. If, however, you'd like to save a little typing, you may try this:

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

Or, if you need full names:

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

In this example, "A2" can be whatever cell (or formula) contains the date in question. For instance:

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

would print the three letter abbreviation for whatever today is.

1
user261479

you can also localize the answer by using [$nnn] before the format (so the custom code is: [$nnn]dddd;@). change nnn with the proper language code. i don't have the list, but somehow, english code is -409 (and my local is -421).

i think you can experiment with Number format, change the language field, then change it back to custom format.

Добро пожаловать в SuperUser. Ответы всегда должны быть самодостаточными, поэтому, пожалуйста, разверните свой ответ в рабочем примере. Кроме того, мы не знаем, откуда вы, поэтому _my local_ немного не определен. Tim 11 лет назад 1
1
user334332

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

0
Glen Lloyd

Displays current date

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

Displays current date with required required text.

=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 8 лет назад 0
0
Raj

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

0
kadrleyn

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

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

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

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

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

Предложение: что уникально в вашем ответе, часть, которая непосредственно отвечает на вопрос, это имя дня недели, а не дня недели. Это термин, на котором нужно сосредоточиться в первом предложении. fixer1234 7 лет назад 0

Похожие вопросы