СУММ данные по датам в Excel - PullRequest
1 голос
/ 04 мая 2009

Моя проблема в следующем ...

У меня маленький самолетик, и мне нужно отслеживать часы. Я должен отслеживать часы по секторам, а не по сумме дня (поэтому иногда у меня 2 или 3 в один и тот же день).

Теперь это проблема ... В столбце C мне нужно СУММИТЬ часы за последние 7 дней. И любые 7 дней, а не только на прошлой неделе. Сделать это вручную довольно просто ... проблема в том, что мне нужна формула, поскольку мои записи довольно большие ...

Вот небольшой пример (скажем, до 15.01.2009 НЕТ ЧАСОВ) ...

КОЛОННА A ------- КОЛОННА B ------- КОЛОННА C

ДАТА -------------- ЧАСЫ ------- ЧАСЫ ПРОШЛИ 7 ДНЕЙ

15/01/2009 ------- ------- 1:00 01: 00

15/01/2009 ------- 2:15 ------- 03: 15

16/01/2009 ------- 1:15 ------- 04: 30

17/01/2009 ------- 1:30 ------- 06: 00

18/01/2009 ------- ------- 1:30 07: 30

18/01/2009 ------- ------- 1:00 08: 30

18/01/2009 ------- ------- 10 2:00: 30

19/01/2009 ------- 2:30 ------- 13: 00

19/01/2009 ------- ------- 3:00 16: 00

20/01/2009 ------- //////// -------- 16: 00

21/01/2009 ------- ------- 1:00 17: 00

22/01/2009 ------- ------- 1:30 15: 15

23/01/2009 ------- ------- 2:00 16: 00

Я боролся последние недели, пытаясь найти формулу, но не повезло ... есть предложения?

Спасибо

Ответы [ 3 ]

1 голос
/ 04 мая 2009

Первым делом нужно получить дату начала, которая будет следующей функцией:

=Now() - 7

Если вы переименовали эту ячейку в «WeekBegin», вы можете использовать следующую формулу для расчета общего количества часов:

=SUMIF(A:A,">=" & WeekBegin,B:B)

Обратите внимание, что я использовал ссылки на столбцы; это должно было как упростить формулу, так и позволить легко добавлять новые данные в конец диапазона. Вам нужно позаботиться о том, чтобы ваша ячейка WeekBegin была , а не в этом столбце A или столбце B, в противном случае вы получите предупреждение о циклической ссылке.

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

=SUMIF(A2:A14,">=" & WeekBegin,B2:B14)

Кроме того, вы можете обнаружить, что ваш результат изначально отображается в виде десятичной дроби. Это формат даты в формате Excel, поэтому вам может понадобиться отформатировать результат как время.

Надеюсь, это поможет!

[Редактировать: На втором проходе, если вы хотите суммировать диапазон, основанный на датах и ​​датах (таким образом, любые 7 дней, как вы, вероятно, подразумеваете в своем посте), ищите заметку предыдущего автора, то есть:

=SUM(B:B) - SUMIF(A:A, "<="& BeginDate, B:B) - SUMIF(A:A, ">"& EndDate, B:B) 

Более элегантное решение предлагается в Excel 2007 с использованием функции SumIFS ():

=SUMIFS(B:B, A:A, ">=" & FromDate,A:A, "<" & ToDate)

Обратите внимание, что аргументы для SUMIFS находятся в другом порядке, чем стандартный SUMIF.

Счастливого Суммирования!]

1 голос
/ 05 мая 2009

Другое решение, которое в основном делает то же самое, что и ранее предложенные решения:

В C1 введите следующую формулу:

{=SUM(IF(($A$1:$A1>=($A1-6))*($A$1:$A1<=$A1), $B$1:$B1, 0))}

А затем просто перетащите формулу вниз.

Если вы не знакомы с формулами массива, внешние скобки {} просто указывают, что формула является формулой массива. Для правильного выполнения необходимо скопировать часть в скобках {} в строку формул, а затем нажать Ctrl + Shift + Enter, чтобы указать, что это формула массива.

0 голосов
/ 04 мая 2009

Вот данные в лучшем формате, если кто-то хочет попробовать:

15-Jan-2009 01:00
15-Jan-2009 02:15
16-Jan-2009 01:15
17-Jan-2009 01:30
18-Jan-2009 01:30
18-Jan-2009 01:10
18-Jan-2009 02:00
19-Jan-2009 02:30
19-Jan-2009 03:00
20-Jan-2009 
21-Jan-2009 01:00
22-Jan-2009 01:30
23-Jan-2009 02:00

Я получил функцию:

=SUM($B$1:$B$13)-SUMIF($A$1:$A$13, "<="& (A1- 7), $B$1:$B$13) - SUMIF($A$1:$A$13, ">"& (A1), $B$1:$B$13)

Это основано на Сумме именованных диапазонов, условных на сегодняшний день? . Идея состоит в том, чтобы сначала вычислить общую сумму: SUM($B$1:$B$13)

затем вычтите все значения, которые произошли старше 7 дней назад: SUMIF($A$1:$A$13, "<="& (A1- 7), $B$1:$B$13)

затем вычтите все значения, которые произошли в будущем: SUMIF($A$1:$A$13, ">"& (A1), $B$1:$B$13)

Смысл в том, чтобы использовать функцию SUMIF , которая «добавляет ячейки, определенные заданным критерием».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...