Последняя дата если в excel

Skip to content

3 примера, как функция ЕСЛИ работает с датами.

На первый взгляд может показаться, что функцию ЕСЛИ для работы с датами можно применять так же, как для числовых и текстовых значений, которые мы только что обсудили. К сожалению, это не так.

Примеры работы функции ЕСЛИ с датами.

Дата в качестве условия, с которым работает функция ЕСЛИ, может быть записана в какую-то ячейку Excel, либо же прямо вставлена в формулу. Вот тут-то и возникают некоторые особенности и сложности работы функции ЕСЛИ с датами.

Пример 1. Формула условия для дат с
функцией ДАТАЗНАЧ (DATEVALUE)

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

В отличие от многих
других функций Excel, ЕСЛИ не может распознавать даты и интерпретирует их как текст,
как простые текстовые строки.

Поэтому вы не можете выразить свое логическое условие просто как  >«15.07.2019» или же >15.07.2019. Увы, ни один из приведенных вариантов не верен.

Чтобы функция ЕСЛИ распознала дату в вашем логическом условии именно как дату, вы должны обернуть ее в функцию ДАТАЗНАЧ (в английском варианте – DATEVALUE).

Например, ДАТАЗНАЧ(«15.07.2019»).

Полная формула ЕСЛИ может
иметь следующую форму:

=ЕСЛИ(B2<ДАТАЗНАЧ(«10.09.2019″),»Поступил»,»Ожидается»)

Как показано на скриншоте,
эта формула ЕСЛИ оценивает даты в столбце В и возвращает «Послупил», если дата
поступления до 10 сентября. В противном случае формула возвращает «Ожидается».

Пример 2. Формула условия для дат с
функцией СЕГОДНЯ()

В случае, когда даты записаны в ячейки таблицы Excel, применять ДАТАЗНАЧ нет необходимости.

Если вы основываете свое условие на текущей дате, то можете взять функцию СЕГОДНЯ (в английском варианте — TODAY) в качестве аргумента функции ЕСЛИ.

К примеру, сегодня — 9 сентября 2019 года.

В столбце C отметим товар, который уже поступил. В ячейке C2 запишем:

=ЕСЛИ(B2<СЕГОДНЯ(),»Поступил»,»»)

В столбце D отметим товар, который еще не поступил. В ячейке D2 запишем:

=ЕСЛИ(B2<СЕГОДНЯ(),»»,»Ожидается»)

Пример 3. Расширенные
формулы ЕСЛИ для будущих и прошлых дат

Предположим, вы хотите
отметить только те даты, которые отстоят от текущей более чем на 30 дней.

Выделим даты, отстоящие более чем на месяц от текущей, в прошлом. Укажем для них «Более месяца назад». Запишем это условие:

=ЕСЛИ(СЕГОДНЯ()-B2>30,»Более
месяца назад»,»»)

Если условие не выполнено, то в ячейку запишем пустую строку «».

А для будущих дат, также отстоящих более чем на месяц, укажем «Ожидается».

=ЕСЛИ(B2-СЕГОДНЯ()>30,»Ожидается»,»»)

Если все результаты попробовать объединить в одном столбце, то придется составить выражение с несколькими вложенными функциями ЕСЛИ:

=ЕСЛИ(СЕГОДНЯ()-B2>30,»Более месяца назад», ЕСЛИ(B2-СЕГОДНЯ()>30,»Ожидается»,»»))

ЕСЛИ с датами

Примеры работы функции ЕСЛИ:

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше

В этой статье описаны синтаксис формулы и использование функции КОНМЕСЯЦА в Microsoft Excel.

Описание

Возвращает порядковый номер последнего дня месяца, отстоящего на указанное количество месяцев от даты, указанной в аргументе «нач_дата». Функция КОНМЕСЯЦА используется для вычисления даты погашения или даты платежа, которая приходится на конец месяца.

Синтаксис

КОНМЕСЯЦА(нач_дата;число_месяцев)

Аргументы функции КОНМЕСЯЦА описаны ниже.

  • нач_дата    — обязательный аргумент. Начальная дата. Даты должны быть введены с использованием функции ДАТА или как результат вычисления других формул и функций. Например, для указания даты 23 мая 2008 года следует воспользоваться выражением ДАТА(2008;5;23). Если ввести даты как текст, это может привести к возникновению проблем.

  • Число_месяцев    — обязательный аргумент. Количество месяцев до или после даты «нач_дата». Положительное значение аргумента «число_месяцев» означает будущие даты; отрицательное значение — прошедшие даты.

    Примечание: Если значение аргумента «число_месяцев» не является целым числом, оно усекается.

Замечания

  • В приложении Microsoft Excel даты хранятся в виде последовательных чисел, что позволяет использовать их в вычислениях. По умолчанию дате 1 января 1900 года соответствует номер 1, а 1 января 2008 года — 39448, так как интервал между этими датами составляет 39 448 дней.

  • Если start_date не является допустимой датой, то EOMONTH возвращает #NUM! значение ошибки #ЗНАЧ!.

  • Если start_date «плюс месяцы» возвращает недействительные даты, то EOMONTH возвращает #NUM! значение ошибки #ЗНАЧ!.

Пример

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Дата

1-янв-11

Формула

Описание

Результат

=КОНМЕСЯЦА(A2;1)

Дата последнего дня месяца, следующего за датой в ячейке А2.

28.02.2011

=КОНМЕСЯЦА(A2;-3)

Дата последнего дня месяца, на три месяца раньше даты в ячейке А2.

31.10.2010

Нужна дополнительная помощь?

Определить последнюю дату в столбце А при условии

iseeu

Дата: Пятница, 07.08.2015, 15:06 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Столбец А даты в формате ДД.ММ.ГГ , столбец B — названия компаний. Нужно определить последнюю (максимальную) дату в Столбце А, которой соответствует требуемое название компании.

Например: Определить дату последней операции «Компания2»?

_ А ______ В___
Дата1 Компания1
Дата2 Компания2
Дата3 Компания1
Дата4 Компания2
Дата5 Компания1

Дата последней операции Компания 2: Дата4
(При данных условиях, формула должна вывести результат — Дата4)

 

Ответить

KSV

Дата: Пятница, 07.08.2015, 15:19 |
Сообщение № 2

Группа: Друзья

Ранг: Ветеран

Сообщений: 770


Репутация:

255

±

Замечаний:
0% ±


Excel 2013

можно так

К сообщению приложен файл:

22.xlsx
(8.6 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333

 

Ответить

_Boroda_

Дата: Пятница, 07.08.2015, 15:22 |
Сообщение № 3

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Или так

Код

=ПРОСМОТР(;-1/(B1:B5=D2);A1:A5)

К сообщению приложен файл:

22_1.xlsx
(8.6 Kb)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

iseeu

Дата: Пятница, 07.08.2015, 15:30 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

можно так
можно такKSV
К сообщению приложен файл: 22.xlsx(9Kb)

Что-то пошло не так…

К сообщению приложен файл:

1906818.png
(80.1 Kb)

 

Ответить

китин

Дата: Пятница, 07.08.2015, 15:32 |
Сообщение № 5

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

Сергей KSV, забыл дописать,что это фрормула массива
[moder]И еще Сергей забыл, что не всем в кайф качать его файл, чтобы посмотреть. Формулу, если она одна в файле, можно и на форуме написать.


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

Сообщение отредактировал _Boroda_Пятница, 07.08.2015, 15:37

 

Ответить

KSV

Дата: Пятница, 07.08.2015, 15:43 |
Сообщение № 6

Группа: Друзья

Ранг: Ветеран

Сообщений: 770


Репутация:

255

±

Замечаний:
0% ±


Excel 2013

И еще Сергей забыл, что не всем в кайф качать его файл, чтобы посмотреть.

Саш, не забыл, а даже не подумал, что такой простой вопрос может быть интересен еще кому-то, кроме ТС :)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333

 

Ответить

iseeu

Дата: Пятница, 07.08.2015, 15:47 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Всем спасибо

Код

=ПРОСМОТР(;-1/(B1:B5=D2);A1:A5)

Помогло!!!! Правда так и не понял как она это делает.

 

Ответить

китин

Дата: Пятница, 07.08.2015, 15:57 |
Сообщение № 8

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

Сергей, ну почему неинтересен.пути решения то могут быть разными


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

iseeu

Дата: Пятница, 07.08.2015, 17:25 |
Сообщение № 9

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Перенёс таблицу в Гугл диск, в табдлице гугл не работает формула((( говорит деление на 0

 

Ответить

KSV

Дата: Пятница, 07.08.2015, 18:31 |
Сообщение № 10

Группа: Друзья

Ранг: Ветеран

Сообщений: 770


Репутация:

255

±

Замечаний:
0% ±


Excel 2013

Код

=ARRAYFORMULA(MAX($A$1:$A$5*($B$1:$B$5=$D$2)))

прежде чем копировать формулу, нажмите на флажок (слева от формулы), чтобы МАКС преобразовалось в MAX (или руками измените после вставки)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333

Сообщение отредактировал KSVПятница, 07.08.2015, 18:57

 

Ответить

TimSha

Дата: Пятница, 07.08.2015, 19:06 |
Сообщение № 11

Группа: Проверенные

Ранг: Ветеран

Сообщений: 627


Репутация:

94

±

Замечаний:
0% ±


Excel 2013 Pro +

Вариант —

Код

=ДМАКС($A$1:$B$6;1;$E$1:$E$2)


«Ctrl+S» — достойное завершение ваших гениальных мыслей!.. ;)

 

Ответить

jakim

Дата: Суббота, 08.08.2015, 17:19 |
Сообщение № 12

Группа: Друзья

Ранг: Старожил

Сообщений: 1150


Репутация:

305

±

Замечаний:
0% ±


Excel 2010

Вариант:

Код

=MAX(INDEX((B1:B5=D2)*A1:A5;0))

 

Ответить

Обычно легко найти записи с самой последней датой, легко сортируя столбец даты в Excel. Однако в некоторых ситуациях данные защищены от сортировки, или сортировка может разрушить данные или структуру данных. Следовательно, как можно найти значение с последней датой без сортировки? Для вас есть три решения:

  • Найти значение с последней датой по формуле 1
  • Найти значение с последней датой по формуле 2
  • Найдите ценность с последней датой с помощью удивительного инструмента

Найти значение с последней датой по формуле 1

В общем, вы можете применить функцию MAX, чтобы узнать последнюю дату, а затем применить функцию VLOOKUP, чтобы легко найти значение в Excel.

Например, вам нужно узнать Сумму на последнюю дату, вы можете применить следующую формулу:

= ВПР (МАКС (B3: B26); B2: D26,3; ЛОЖЬ)

Внимание: в формуле выше,

  • B3: B26 — столбец даты, а MAX (B3: B26) найдет самую последнюю дату в столбце даты;
  • B2: D26 — это целая таблица, в которой вы найдете значение;
  • 3 означает, что вы найдете значение в третьем столбце таблицы.

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


Найти значение с последней датой по формуле 2

Если столбец даты находится справа от столбца суммы, функция ВПР вернет значения ошибок. В этой ситуации вы можете комбинировать функции ИНДЕКС, ПОИСКПОЗ и МАКС, чтобы найти значение с самой последней датой в Excel.

Выберите пустую ячейку, введите формулу ниже и нажмите Enter .

=INDEX(C3:C26,MATCH(MAX(D3:D26),D3:D26,0))

Внимание: В формуле выше

  • D3: D26 — столбец даты, MAX (D3: D26) найдет самую последнюю дату в столбце даты, а MATCH (MAX (D3: D26), D3: D26,0) определит номер строки последней даты в столбце даты.
  • C3: C26 — это столбец суммы, в котором вы найдете значение.

Эта формула также может возвращать только первое сопоставленное значение независимо от того, сколько существует сопоставленных значений.


Найдите ценность с последней датой с помощью удивительного инструмента

Если вы хотите найти все совпадающие значения с последней датой независимо от того, находится ли столбец даты слева или справа, вы можете применить Расширенные ряды комбинирования особенность Kutools for Excel.

Kutools for Excel— Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 60-дневная пробная версия, кредитная карта не требуется! Get It Now

1. Выберите диапазон, из которого вы найдете значения, и нажмите Кутулс > Содержание > Расширенные ряды комбинирования.

Функции: Расширенные ряды комбинирования функция изменит исходные данные. Рекомендуется скопировать ваш диапазон в новое место, а затем применить эту функцию к новому диапазону.

2. В диалоговом окне Advanced Combine Rows настройте следующие параметры:
(1) Щелкните, чтобы выбрать столбец Дата, и щелкните значок первичная Ключ;
(2) Щелкните, чтобы выбрать столбец Сумма, и щелкните Сочетать > Запятая;
(3) Задайте вычисления или комбинации для других столбцов. В этом случае я добавляю подсчет для столбца Имя, нажав Рассчитать > Количество.
 

3, Нажмите Ok кнопку.

Теперь вы увидите, что строки объединены на основе столбца даты. Все значения сумм, приходящиеся на одну дату, объединяются в одну ячейку. Смотрите скриншот:

Внимание: Если существует несколько дат, вы можете выбрать столбец даты и щелкнуть Время > Сортировать чтобы легко получить последнюю дату и соответствующие значения.


Статьи по теме:


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (4)


Оценок пока нет. Оцените первым!

Поиск последнего вхождения (инвертированный ВПР)

Все классические функции поиска и подстановки типа ВПР (VLOOKUP), ГПР (HLOOKUP), ПОИСКПОЗ (MATCH) и им подобные имеют одну важную особенность — они ищут от начала к концу, т.е. слева-направо или сверху-вниз по исходным данным. Как только находится первое подходящее совпадение — поиск останавливается и найденным оказывается только первое вхождение нужного нам элемента.

Что же делать, если нам требуется найти не первое, а последнее вхождение? Например, последнюю сделку по клиенту, последний платёж, самую свежую заявку и т.д.?

Способ 1. Поиск последней строки формулой массива

Если в исходной таблице нет столбца с датой или порядковым номером строки (заказа, платежа…), то наша задача сводится, по сути, к поиску последней строки, удовлетворяющей заданному условию. Реализовать подобное можно вот такой формулой массива:

Формула массива для поиска последнего вхождения

Здесь:

  • Функция ЕСЛИ (IF) проверяет по очереди все ячейки в столбце Клиент и выводит номер строки, если в ней лежит нужное нам имя. Номер строки на листе нам даёт функция СТРОКА (ROW), но поскольку нам нужен номер строки в таблице, то дополнительно приходится вычитать 1, т.к. у нас в таблице есть шапка.
  • Затем функция МАКС (MAX) выбирает из сформированного набора номеров строк максимальное значение, т.е. номер самой последней строки клиента.
  • Функция ИНДЕКС (INDEX) выдаёт содержимое ячейки с найденным последним номером из любого другого требуемого столбца таблицы (Код заказа).

Всё это нужно вводить как формулу массива, т.е.:

  • В Office 365 с последними установленными обновлениями и поддержкой динамических массивов — можно просто жать Enter.
  • Во всех остальных версиях после ввода формулы придется нажимать сочетание клавиш Ctrl+Shift+Enter, что автоматически добавит к ней фигурные скобки в строке формул.

Способ 2. Обратный поиск новой функцией ПРОСМОТРХ

Я уже писал большую статью с видео про новую функцию ПРОСМОТРХ (XLOOKUP), которая появилась в последних версиях Office на замену старушке ВПР (VLOOKUP). При помощи ПРОСМОТРХ наша задача решается совершенно элементарно, т.к. для этой функции (в отличие от ВПР) можно явно задавать направление поиска: сверху-вниз или снизу-вверх — за это отвечает её последний аргумент (-1):

Обратный поиск с ПРОСМОТРХ

Способ 3. Поиск строки с последней датой

Если в исходных данных у нас есть столбец с порядковым номером или датой, играющей аналогичную роль, то задача видоизменяется — нам требуется найти уже не последнюю (самую нижнюю) строку с совпадением, а строку с самой поздней (максимальной) датой.

Как это сделать с помощью классических функций я уже подробно разбирал, а теперь давайте попробуем использовать мощь новых функций динамических массивов. Исходную таблицу для пущей красоты и удобства тоже заранее преобразуем в «умную» с помощью сочетания клавиш Ctrl+T или команды Главная — Форматировать как таблицу (Home — Format as Table).

С их помощью этой «убойной парочки» наша задача решается весьма изящно:

Обратный поиск на динамических массивах в Excel

Здесь:

  • Сначала функция ФИЛЬТР (FILTER) отбирает только те строки из нашей таблицы, где в столбце Клиент — нужное нам имя.
  • Потом функция СОРТ (SORT) сортирует отобранные строки по убыванию даты, чтобы самая последняя сделка оказалась сверху.
  • Функция ИНДЕКС (INDEX) извлекает первую строку, т.е. выдает нужную нам последнюю сделку.
  • И, наконец, внешняя функция ФИЛЬТР убирает из результатов лишние 1-й и 3-й столбцы (Код заказа и Клиент) и оставляет только дату и сумму. Для этого используется массив констант {0;1;0;1}, определяющий какие именно столбцы мы хотим (1) или не хотим (0) выводить.

Способ 4. Поиск последнего совпадения в Power Query

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

1. Преобразуем нашу исходную таблицу в «умную» с помощью сочетания клавиш Ctrl+T или команды Главная — Форматировать как таблицу (Home — Format as Table).

2. Загружаем её в Power Query кнопкой Из таблицы/диапазона на вкладке Данные (Data — From Table/Range).

3. Сортируем (через выпадающий список фильтра в шапке) нашу таблицу по убыванию даты, чтобы самые последние сделки оказались сверху.

4. На вкладке Преобразование выбираем команду Группировать по (Transform — Group By) и задаем группировку по клиентам, а в качестве агрегирующей функции выбираем вариант Все строки (All rows). Назвать новый столбец можно как угодно — например Подробности.

Группировка строк в Power Query

После группировки получим список уникальных имен наших клиентов и в столбце Подробности — таблицы со всеми сделками каждого из них, где первой строкой будет идти самая последняя сделка, которая нам и нужна:

Результаты группировки

5. Добавляем новый вычисляемый столбец кнопкой Настраиваемый столбец на вкладке Добавить столбец (Add column — Add custom column) и вводим следующую формулу:

Добавляем вычисляемый столбец для извлечения 1 строки

Здесь Подробности — это столбец, откуда мы берем таблицы по клиентам, а {0} — это номер строки, которую мы хотим извлечь (нумерация строк в Power Query начинается с нуля). Получаем столбец с записями (Record), где каждая запись — первая строка из каждой таблицы:

Полученные записи

Осталось развернуть содержимое всех записей кнопкой с двойными стрелками в шапке столбца Последняя сделка, выбрав нужные столбцы:

Разворачиваем записи в столбцы

… и удалить потом ненужный более столбец Подробности щёлкнув по его заголовку правой кнопкой мыши — Удалить столбцы (Remove columns).

После выгрузки результатов на лист через Главная — Закрыть и загрузить — Закрыть и загрузить в (Home — Close & Load — Close & Load to…) получим вот такую симпатичную таблицу со списком последних сделок, как и хотели:

Результаты запроса Power Query

При изменении исходных данных результаты нужно не забыть обновить, щёлкнув по ним правой кнопкой мыши — команда Обновить (Refresh) или сочетанием клавиш Ctrl+Alt+F5.

Ссылки по теме

  • Функция ПРОСМОТРХ — наследник ВПР
  • Как использовать новые функции динамических массивов СОРТ, ФИЛЬТР и УНИК
  • Поиск последней непустой ячейки в строке или столбце функцией ПРОСМОТР

Like this post? Please share to your friends:
  • Последняя версия word 2021
  • Последняя ячейка в excel адрес ячейки
  • Последняя версия office word скачать бесплатно
  • Последняя строчка в excel vba
  • Последняя версия microsoft word 2019