Отобразить разницу в дате в поле MS Word - PullRequest
5 голосов
/ 27 апреля 2010

У меня есть резюме, и я хотел бы автоматически обновлять мой возраст при открытии. Итак, какую формулу я должен вставить в поле MS Word?

Что-то вроде:

<b>{= {DATE} - {"01/01/1983"} }</b>

Ответы [ 4 ]

4 голосов
/ 21 марта 2013

Я пытался, но не смог найти в полях Word эквивалент способа Excel вычесть дневное время из другого (скажем, 18.05.1983 с сегодняшнего дня 21.03.2013), что легко в Excel с дневного времени ( 01.01.1900 в Excel 2013) было выбрано в качестве начала и каждый второй день, так как рассчитывается по этой ссылке, показанные данные являются лишь способом представления этого результата (полная дата, месяц в цифрах или его полное название, или даже простое число Excel), которое можно переключать, щелкая правой кнопкой мыши по ячейке и выбирая формат ячейки категории (поскольку 01.01.1900 равно 1, затем 18.05.1983 - 30454 (... а также 00 01.01.1900 - 0!)).

Чтобы ответить на первоначальный вопрос, я предлагаю написать:

{= {DATE  \@ "YYYY"} - my_year - 1*{=OR({={DATE  \@ "MM"} < my_month};{=AND({={DATE  \@ "MM"} = my_month};{={ DATE  \@ "dd"} < my_day})})}  \* MERGEFORMAT}

с учетом:

  1. , что фигурные скобки {} являются символами, характерными для Word (не обычные «буквы»), и их нужно вставить, нажав CTRL + F9.
  2. 'my_year', 'my_month' (дважды) и 'my_day': должны быть числами
  3. это письмо довольно короткое и предлагает только 4 изменения (к сожалению, месяц дважды), которые помогут предотвратить ошибки
  4. для начинающих это письмо говорит: сегодняшний год минус my_year, и вычтите один, если либо значение сегодняшнего месяца меньше, чем my_month, либо оба значения равны, а значение сегодняшнего дня меньше, чем my_day, поэтому мы не добавили один год в избытке.

Параметр MERGEFORMAT полезен для сохранения правильного формата.

Также для тех, кто не привык работать с полями Word:

  • щелкнув правой кнопкой мыши текст в фигурных скобках {} и выбрав «Переключить коды полей», переключается на сам код (текст внутри) или на результат вычисления этого кода, но это может быть устаревшим (может быть предыдущим результатом и код был изменен).
  • чтобы убедиться, что результат обновлен, щелкните правой кнопкой мыши и выберите «Обновить поле».
  • и чтобы убедиться, что вы открываете каждое поле внутри мастер-поля, выберите все поле (лучше выбрать всю строку, содержащую его), щелкните правой кнопкой мыши и выберите «Переключить коды полей» (в противном случае некоторые поля имеют плохую кодировку или что может возвращать пустое выражение, может не быть виден и может повлиять на результат просмотра позже, когда он не нужен).

Это было бы для 18.05.1983 (я изменил 1 января, то есть с 01.01 по 18, чтобы избежать путаницы):

{= {DATE  \@ "YYYY"} - 1983 - 1*{=OR({={DATE  \@ "MM"} < 05};{=AND({={DATE  \@ "MM"} = 05};{={ DATE  \@ "dd"} < 18})})}  \* MERGEFORMAT}
3 голосов
/ 28 апреля 2010

Это один из лучших сайтов для работы с кодами полей Word - http://www.addbalance.com/usersguide/fields.htm - здесь есть примеры того, как создавать +/- даты.

Вот как бы вы рассчитали, исходя из месяца рождения января и года рождения 1983 года.

{IF{DATE\@"MM"} >= 01 { = {DATE\@"YYYY"} – 1983 \#"00"} { = {DATE\@"YYYY"} – 1984 \#"00"}}

Обратите внимание, что в случае января, это утверждение IF всегда будет верным и даст вам = ГОД-1983. Вы можете использовать другой вложенный оператор IF, чтобы проверить день, чтобы получить более точную информацию.

0 голосов
/ 29 сентября 2017
  1. Создать текстовое поле формы.Назовите поле как «Дата рождения»

enter image description here

Создайте поле со следующим кодом:

{={DATE \@ "yyyy"} — {BirthDate \@ "yyyy"}}

0 голосов
/ 13 июня 2017

Я бы предложил рассчитать серийный номер для обеих дат и вычесть их друг из друга. Это не должно быть слишком сложным: нас интересует только количество лет. год * 365 + месяц * 31 + день здесь будет хорошо.

Для количества лет разделите разницу на 365. Затем удалите дробную часть, используя INT (не ROUND, что сделает вас на 1 год старше полугодия).

{ = INT(({ DATE \@"YYYY" }*365 + { DATE \@"MM" }*31 + { DATE \@"dd" } 
      - (my_year*365 + my_month*31 + my_day)) / 365) \# "0" }
...