21

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

Я пытался использовать:

  1. функция TODAY() которая возвращает сегодняшнюю дату в формате даты.
  2. Day(<date>) который возвращает номер дня <date> . То есть DAY(19/05/1984) должен вернуться 19.

Следовательно, формула

=DAY(TODAY())

должен дать результат, который я хотел.

Тем не менее, это возвращение 18.01.1900 (при использовании функции сегодня)

Если я использую

=TODAY()

в ячейке А1, а затем

=DAY(A1)

в другой камере я получаю правильный результат.

Почему ДЕНЬ (СЕГОДНЯ ()) не дает ожидаемого результата?

Исходя из моего опыта математика и программиста-любителя (в Maple, Java и некоторых Python), моя композиция функций выглядит хорошо.

В целом, как Excel обрабатывает состав формул?

4 ответа4

40

Ваша формула верна; способ, которым Excel форматирует ячейки, сбивает с толку. Например, если вы вручную установите значение ячейки 18 а затем измените формат на дату, он будет отображаться как January 18, 1900 .

Если вы измените формат ячейки с вашей формулой на "Общий", он должен отобразить ожидаемый результат.

9

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

Как использовать даты и время в Excel

В Excel числа используются для представления дат (возможно, дробное число дней с 0 января 1900 года), но в Excel они хранятся и обрабатываются как числа. TODAY () - это числовая функция, а DAY () - это функция от числового аргумента до числового результата.

В вашем случае DAY(TODAY()) правильно вернул 18 (число), которое, я полагаю, вы присвоили ячейке, отформатированной для отображения даты в краткой форме - так что 18 отображается как 18.01.1900. Потому что для Excel, когда 18 интерпретируется как дата, вот что это значит.

Если вы отформатируете эту ячейку в числовом формате, вы увидите ответ, отображаемый так, как вы ожидали, то есть 18.

2

Нет ничего плохого в вашей формуле. То, что я хотел бы предложить вам, если Формула не дает ожидаемый результат, то она либо выдает ошибку или неправильный результат. Так как вы не упомянули, что в Формуле есть повар!

В то же время я хотел бы показать вам, как можно получить значение DAY в Number в Excel.

Проверьте снимок экрана ниже.

Получить день в номере

NB:

Дата находится в ячейке E166. 2-й столбец F имеет результаты, а 3-й столбец G показывает формулу, для которой я использовал.

Вы также можете использовать функцию TEXT, чтобы получить значение дня в виде текстовых данных.

Значение имеет КРАСНЫЙ Цвет имеет пользовательский формат ячейки DD, вы можете применить к ячейке (S), чтобы отображать только значения Day для даты (S).

Обратите внимание, я предложил вам все возможности, так как вы упомянули, что в основном вы не являетесь пользователем Excel.

Надеюсь, это поможет вам, не забудьте опубликовать ОШИБКУ, которую дала ваша Формула.

1

Ваша формула составлена правильно. Неожиданный результат связан с тем, как различные типы данных хранятся в Excel.

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

Система дат 1900 года

В системе дат 1900 года первый поддерживаемый день - 1 января 1900 года. При вводе даты она преобразуется в серийный номер, представляющий количество прошедших дней с 1 января 1900 года. Например, если вы введете 5 июля 1998 года, Excel преобразует дату в серийный номер 35981.

По умолчанию Microsoft Excel для Windows использует систему дат 1900 года. Система дат 1900 года обеспечивает лучшую совместимость между Excel и другими программами для работы с электронными таблицами, такими как Lotus 1-2-3, которые предназначены для работы под MS-DOS или Microsoft Windows.

Система дат 1904 года

В системе дат 1904 года первый поддерживаемый день - 1 января 1904 года. При вводе даты она преобразуется в серийный номер, представляющий количество прошедших дней с 1 января 1904 года. Например, если вы введете 5 июля 1998 года, Excel преобразует дату в серийный номер 34519.

По умолчанию Microsoft Excel для Macintosh использует систему дат 1904 года. Из-за конструкции ранних компьютеров Macintosh даты до 1 января 1904 года не поддерживались. Этот дизайн был призван предотвратить проблемы, связанные с тем, что 1900 год не был високосным. Если вы переключитесь на систему дат 1900 года, Excel для Macintosh поддерживает даты уже с 1 января 1900 года.

Эти выдержки были взяты из: https://support.microsoft.com/en-us/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel

Серийный номер представляет собой простой текущий счетчик числа дат с 1 января 1900 года, включая фиктивную дату 29 февраля 1900 года. Однако функцию DAY можно дополнительно рассматривать как функцию преобразования типов данных. Он принимает серийный номер даты в качестве входных данных и возвращает целое число в качестве выходных данных. В вашем примере, если мы думаем о 18 как о представлении серийного числа и считаем 18 дней вперед с 1 января 1900 года, мы получим 18 января 1900 года.

Простое исправление в интерфейсе - изменить формат ячейки на что-то другое, например, Number или General. Это скажет Excel отобразить его как целое число, а не пытаться интерпретировать его как серию дат. На заднем плане все хорошо, чтобы пойти. Целочисленный результат может использоваться в любой другой формуле и будет вести себя правильно.

В качестве примера, скажем, мы хотели создать условную формулу, которая сообщит нам, прошло ли 15-е число в текущем месяце. Мы можем сделать это используя:

=IF(DAY(TODAY())>15,"The 15th has passed","It is not yet the 15th")

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

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