Як Excel обробляє склад функцій?


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 обробляє склад формул?


11
Правильна відповідь - "погано".
Карл Віттофт

Служба підтримки для функцій Excel .. в ній навіть написано: =DAY(TODAY())... Повертається поточний день місяця (1 - 31) ..
txtechhelp

Відповіді:


40

Ваша формула правильна; це так, як Excel формує клітини, що заплутує. Наприклад, якщо вручну встановити значення комірки на, 18а потім змінити формат на дату, він відобразить це як January 18, 1900.

Якщо ви зміните формат комірки зі своєю формулою на "Загальне", він повинен відображати очікуваний результат.


3
Це може допомогти пояснити, чому саме це робить форматування. Excel зберігає часові позначки як "дні з 00:00:00 0 січня 1900 року", де години - хвилини та секунди є десятковими числами (полудень 1 січня 1900 року - "1,5").
Карл Кевінсон

І Excel буде за замовчуванням форматування дати або часу, як тільки буде використане будь-яке значення дати / часу. Це може бути або інша комірка, яка відформатована так, або такі функції TODAY(). Дійсно дратує, коли ви використовуєте їх лише у функціях розкладання, і вам доведеться перемикати форматування назад.
щурячий вирод

1
Дотично доречне: sciencemag.org/news/2016/08/… [ Кожна п'ята генетична робота містить помилки завдяки Microsoft Excel]
Даррен Рінгер

@DarrenRinger я завжди читав, що як "звинувачують їх інструменти" - ключовий момент бумаги та залишається пильним . Подібне трапилося зі мною (хоча не з генетики), і як і всі інші, я думаю, що "Excel змінив цю цифру на ....", тоді як я мав би сказати собі "чорт, я не враховував, що ця цифра зміниться до ..... "
Даррен Бартруп-Кук

9

Я думаю, ви можете заплутатися, думаючи, що Excel маніпулює значеннями "date": це не так.

Як використовувати дати та час у Excel

У Excel числа використовуються для відображення дат (можливо, дробова кількість днів з 0 січня-1900 р.), Але вони зберігаються та обробляються Excel як числа. TODAY () - числова функція, а DAY () - функція від числового аргументу до числового результату.

У вашому випадку DAY (СЬОГОДНІ ()) правильно повернув 18 (число), яке, я думаю, вам призначено для комірки, яка відформатована для відображення дати в короткому вигляді - так, що 18 відображається як 18.01.1900. Тому що для Excel, коли 18 трактують як дату, саме це означає.

Якщо ви відформатуєте цю клітинку в числовому форматі, ви побачите відповідь, як очікували, тобто 18.


2

З вашою Формулою нічого поганого. Що б я хотів вам запропонувати, якщо Формула не дає очікуваного результату, то вона створює або Помилку, або Неправильний результат. Оскільки ви не згадали, що готують у Формулі!

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

Перевірте знімок екрана нижче.

Отримайте день у номер

Примітка:

Дата в комірці E166 . Другий стовпчик F має результати, а 3-й стовпчик G показує формулу, яку я використовував.

Ви також можете використовувати функцію TEXT, щоб отримати значення Day як текстові дані.

Значення ЧЕРВЕНЬ Колір має спеціальний формат комірок DD, ви можете застосувати у комірці (S), щоб відображати лише денні значення дати (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-bet between-the-1900-and-the-1904-date-system-in- excel

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

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

Як приклад, скажімо, що ми хотіли створити умовну формулу, яка б сказала нам, чи минуло 15 числа в поточному місяці. Це можна зробити за допомогою:

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.