Обчисліть кількість днів на рік між двома різними датами Excel


0

У мене є лист даних Excel, який містить близько 200 рядків, у кожному рядку є дата початку та дата закінчення. Мені потрібно обчислити різницю між датами, але за рік. припустимо, дата початку - 3.03.2017, а кінцева дата - 3/3/2019, мені потрібно обчислити кількість днів у 2017, 2018 та 2019 роках між обома датами.


1
Ви хочете загальну кількість днів між початком і кінцем або 3 різні числа, що представляють щороку в діапазоні?
DavidPostill

Ласкаво просимо до Супер Користувача! Ви можете вільно редагувати свої власні публікації, але для вашого захисту це потрібно зробити в оригінальному обліковому записі користувача. Схоже, ви створили другий обліковий запис, який також буде заважати вашій здатності коментувати всередині своєї теми та приймати відповідь. Див. Розділ Об’єднати мої акаунти, щоб об’єднати ваші облікові записи, що вирішить проблему.
fixer1234

Відповіді:


2

Ця формула повинна працювати до 25 листопада 4770 року, до цього часу Excel, можливо, було витіснене чимось іншим.

=SUMPRODUCT(--(YEAR(ROW(INDIRECT(StartDt &":"&endDt)))=C$1))

де C1 містить відповідний рік.

Наприклад:

введіть тут опис зображення

Однак ви пишете, що хочете знати "різницю між датами". Ця фразеологія зазвичай означає, що ви не хочете рахувати перше побачення. Формула підраховує всі дати.

Якщо ви дійсно хочете "різниці", а не кількості днів від "Почати до кінця", додайте її до дати початку у формулі:

=SUMPRODUCT(--(YEAR(ROW(INDIRECT(StartDt+1 &":"&endDt)))=C$1))

Редагувати: (спровоковано @ fixer1234) Щоб зрозуміти, як це працює, вам потрібно це зрозуміти

  • дати зберігаються в Excel як порядкові номери, як правило, 1-jan-1900рівні 1 .
  • ROW(INDIRECT(n:m))- це спосіб повернення масиву чисел, рівних номерам рядків, представленим nіm
  • Потім YEARфункція повертає еквівалентний рік з кожного з цих значень, при цьому ми порівнюємо з роком у верхній частині відповідного стовпця, генеруючи масив TRUE;FALSE.
  • Оскільки в Excel, --TRUE= 1, SUMPRODUCTефективно поверне SUMвсі дати, що знаходяться в році, у верхній частині стовпця.
  • Обмеження дати, яке я згадав, полягає в тому, що це лише 2^20рядки в Excel. Це можна було б подолати, застосувавши зміщення до дат у структурі ROW(INDIRECT(…, а потім додавши це назад після, якщо вказані дати пізніше 11/25/4770.

Розумний, але запропонуйте змінити "названі діапазони" на явні діапазони, щоб це рішення працювало в додатках для електронних таблиць, окрім Excel. наприклад, C2: =SUMPRODUCT(--(YEAR(ROW(INDIRECT($A2&":"&$B2)))=C$1)). Це був єдиний спосіб, коли я міг змусити це працювати в LO Calc. Було б також корисно додати кілька речень, щоб пояснити, як це працює за допомогою уявних рядків.
fixer1234

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