Формула массива Google Sheets для временных рядов - PullRequest
0 голосов
/ 04 октября 2019

Я работаю над листом Google, который генерирует месячные временные ряды на основе следующей информации:

  1. Дата начала (C17)
  2. Дата окончания (C18)
  3. Сумма в начале периода (C19)
  4. Вычеты в течение периода (D19: L19)

Моя текущая настройка выглядит следующим образом:

Current Table

Мне нужны две ArrayFormulas:

  • Один для заполнения вычитаемой суммы столбца (D19: L19), если дата (B21: B) находится в диапазоне дат вычета(D17: 17, D18: 18)
  • Один для расчета эффективной суммы после вычета в конце каждого месяца.

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

Таблица временных рядов предназначена для генерирования путем подачи данных из другой таблицы - таблицы, в которой указаны месячная начальная сумма и сведения о вычетах. используя поля Start Дата, Дата окончания и Сумма. До сих пор я был в состоянии собрать следующие данные:

Месяцы в диапазоне:

=datedif($C$17,$C$18,"M") - named range "ScheduleMonths"

Столбец месяцев:

=ArrayFormula(edate(C17,row(B1:indirect("B"&ScheduleMonths))))

Итого за месяц:

=ARRAYFORMULA(C21:indirect("C"&ScheduleMonths+20)- 
 D21:indirect("D"&ScheduleMonths+20)-E21:indirect("E"&ScheduleMonths+20)- 
 F21:indirect("F"&ScheduleMonths+20)-G21:indirect("G"&ScheduleMonths+20)- 
 H21:indirect("H"&ScheduleMonths+20)-I21:indirect("I"&ScheduleMonths+20)- 
 J21:indirect("J"&ScheduleMonths+20)-K21:indirect("K"&ScheduleMonths+20)- 
 L21:indirect("L"&ScheduleMonths+20))

Это нормальная формула, которую я настроил для использования в полях таблицы:

=if(AND(C$17<=$B21,$B21<=C$18),C$19,"")

Я ожидаю, что результирующие ArrayFormulas заполнят все ячейки ежемесячного удержания с соответствующими суммами удержанийесли дата (B21: B) попадает в диапазон дат вычета (D17: 17, D18: 18). До сих пор я достиг этого только с нормальной формулой.

1 Ответ

0 голосов
/ 09 октября 2019

Обновление: я выяснил, как сделать сумму после вычета в A22.

=ARRAYFORMULA(C22:indirect("C"&'Amplaine Auto Time Series'!ScheduleMonths+21)-SUMIF(IF(COLUMN(D22:indirect("AC"&'Amplaine Auto Time Series'!ScheduleMonths+21)),ROW(D22:indirect("AC"&'Amplaine Auto Time Series'!ScheduleMonths+21))),ROW(D22:indirect("AC"&'Amplaine Auto Time Series'!ScheduleMonths+21)),D22:indirect("AC"&'Amplaine Auto Time Series'!ScheduleMonths+21)))

Заполнение отдельных полей вычетов все еще находится в стадии разработки с растущими требованиями.

...