У меня есть проект, для которого я должен создать автоматизированную электронную таблицу. Первый лист содержит введенные человеком данные. Например, предположим, что человек вводит сумму Х того, что он получил на дату ХХ / ХХ / ХХ (используйте текст в столбцах в Excel, затем с разделителями, затем нажмите вкладку, пробел и завершите).
11/19/2015 11/20/2015 11/25/2015 11/30/15 1/2/2016
Apples 4 5 2 7 1
Bananas 6 4 5 7 3
Oranges 3 0 4 0 0
Теперь это все введенные пользователем данные. Из этих данных, введенных пользователем, мне нужен второй лист для отображения еженедельной даты (даты, которая является субботой, определяющей неделю) и суммы всех вещей, полученных за эту неделю. Вот что мне нужно для отображения листа 2 из введенных пользователем данных:
11/21/2015 11/28/2015 1/2/2016
Total 22 11 4
Apples 9 2 1
Bananas 10 5 3
Oranges 3 4 0
Если вы можете заметить, 19.11.2015 и 20.11.2015 приходится на неделю с 21.11.2015, то есть 21.11.2015 отображается только в одной ячейке, а все вещи за эту неделю суммируются. Даты, введенные пользователем, могут быть как можно дальше друг от друга, поэтому я включил 1/2/2016.
Теперь выяснить формулу для сумм должно быть проще, но у меня проблема с отображением еженедельной даты один раз.Одна из вещей, которая может произойти, - то, что пользователь по ошибке вводит одну и ту же дату дважды. Я проверил это с помощью формулы:
=IF(IFERROR(MODE.SNGL(1:1)>=1,0),"CHECK DATES",__________)
Первая недельная ячейка даты проста, так как она отвечает на первую введенную пользователем дату. Просто:
=IF(IFERROR(MODE.SNGL(1:1)>=1,0),"CHECK DATES",B1-weekday(B1)+7)
Таким образом, проблема заключается в том, что следующая дата НЕ отображается снова 21.11.2015.
ОБНОВЛЕНИЕ После некоторого поиска в Google моя проблема в основном такая же, как найти k-ое по величине число, чем указанное число. К счастью, было много сайтов, которые давали мне полезную информацию. Итоговая формула, которую я придумал для отображения недельных дат, следующих за первой недельной датой:
=IF(IFERROR(MODE.SNGL(1:1)>=1,0),"CHECK DATES",IFERROR(LARGE(1:1,COUNTIF(1:1,">"&B17))-WEEKDAY(LARGE(1:1,COUNTIF(1:1,">"&B17)))+7,""))
Эта формула также позволяет ячейкам, следующим за последней недельной датой, отображать "", что можно изменить, чтобы отобразить значение # N/A, если необходимо. Теперь перейдем к правильному суммированию.