Математика даты надгробия (Microsoft Excel)
Роберт любит работать над генеалогией. Иногда, когда он находит более старое кладбище, вместо даты рождения и смерти на могильной плите видна только одна дата и возраст. Например, «родился: 18 января 1801 года, умер 81 год, 11 месяцев, 17 дней» или «возраст: 93 года, 8 месяцев, 22 дня, умер 18 марта 1901 года». Роберт спрашивает, есть ли способ вычислить недостающую дату дня.
Есть способ сделать это, но он не предполагает использования обычных функций рабочего листа. В то время как Excel включает богатый набор функций рабочего листа, которые позволяют управлять датами, «базовой датой» Excel является 1 января 1901 года; это дата, с которой отсчитываются все даты. (Вы можете изменить базовую дату, но только на три года, до 1904 года. Эта возможность предоставляется для совместимости с Excel на Mac.) Это означает, что более старые даты, такие как те, которые вы найдете на кладбище для генеалогических целей, могут Не рассчитываются напрямую в Excel.
К счастью, у VBA нет этого ограничения. Это означает, что вы можете легко создать определяемую пользователем функцию (макрос), которая будет выполнять вычисления за вас. Начните с размещения начальной даты (даты рождения или смерти)
в ячейке B1. Затем в ячейках B2: B4 введите количество лет, месяцев и дней, на которые вы хотите изменить дату начала. Таким образом, если B1 содержит дату рождения, тогда ячейки B2: B4 должны быть положительными (вы хотите добавить их к дате начала). Если B1 содержит дату смерти, тогда B2: B4 должно быть отрицательным (вы хотите вычесть их из начальной даты).
Затем создайте этот макрос:
Function FindDate(Start As Date, iYrs As Integer, _ iMths As Integer, iDays As Integer) Application.Volatile Dim D As Date D = DateAdd("yyyy", iYrs, Start) D = DateAdd("m", iMths, D) D = DateAdd("d", iDays, D) FindDate = Format(D, "m/d/yyyy") End Function
В любой ячейке, в которой вы хотите отобразить рассчитанную дату, вы можете ввести следующую формулу:
=FindDate(B1,B2,B3,B4)
Результатом функции является отформатированная дата, которая представляет собой дату начала, скорректированную на указанные вами годы, месяцы и дни. Таким образом, если ячейка B1 содержит 1/18/1801, ячейка B2 содержит 81, ячейка B3 содержит 11, а ячейка B4 содержит 17, тогда функция вернет 1/4/1883. Точно так же, если ячейка B1 содержит 18.03.1901, ячейка B2 содержит -93, ячейка B3 содержит -8, а ячейка B4 содержит -22, тогда возвращенным результатом будет 26.06.1807.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (5896) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Tombstone_Date_Math [Математика даты надгробия]
.