2015-11-19 2 views
0

У меня 2 таблицы:Количество дней пересекающихся диапазонов дат (таблица)

Таблица 1:

Start Date | End Date | Value 
-------------------------------- 
dd.mm.yyyy | dd.mm.yyyy | 3 

Таблица 2:

Start Date | End Date | Value 
-------------------------------- 
dd.mm.yyyy | dd.mm.yyyy | ???? 

Значение Таблица 2 рассчитывается следующим образом:

  1. Найти все строки в таблице 1, одной, где начальная и конечная дата в таблице 1 пересекаются с текущими строками даты начала и окончания Таблицы 2
  2. Для каждой из этих строк, умножить значение таблицы 1 с количество дней, пересекающих
  3. Сложите эти значения

Пример:

Таблица 1:

Start Date | End Date | Value 
-------------------------------- 
01.01.2015 | 05.01.2015 | 3 
03.01.2015 | 08.01.2015 | 6 

Таблица 2:

Start Date | End Date | Value 
-------------------------------- 
02.01.2015 | 07.01.2015 | (4 * 3) + (5 * 6) 

В случае, если значение может быть разбита следующим образом:

(4 дней пересечение в таблице 1, Строка 1 * Значение строки 1) + (пересечение 5 дней в таблице 1, строка 2 * значение строки 2)


К сожалению, у меня нет НИКАКОЙ идеи о том, как это сделать. Лучше всего было бы, если не задействован VBA (только формула).

Любые идеи?

Спасибо!

+0

Две вещи имеют решающее значение здесь: Excel должны понимать, что значение ячейки имеют «дата» (проверьте формат ячейки для этого), и как только это станет ясным, вы можете использовать функцию байтов для вычисления количества дней между двумя днями. – Dominique

ответ

0

Основная формула для получения пересечение двух диапазонов дат является: -

MIN(End1,End2)-MAX(Start1,Start2)+1 

Если это оказывается нулевым или отрицательным нет перекрытия.

Я хотел бы поместить это в формулу массива, потому что каждый результат должен быть умножен на значение в той же строке таблицы 1, но MIN и MAX не работают, поэтому у меня появилось много операторов IF: -

=SUM(IF(IF($B$2:$B$3<F2,$B$2:$B$3,F2)-IF($A$2:$A$3>E2,$A$2:$A$3,E2)<0,0, 
IF($B$2:$B$3<F2,$B$2:$B$3,F2)-IF($A$2:$A$3>E2,$A$2:$A$3,E2)+1)*$C$2:$C$3) 

где данные таблицы 1 находятся в A2: данные C3 и таблицы 2 находятся в E2: G2.

Это необходимо ввести в G2 с CtrlСдвигаВведите

Will post screen shot later

+0

Большое спасибо! Это дало мне понять, как это сделать. – JDC