Как скопировать формулу по горизонтали с переменным числом раз?- GoogleSheets - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть набор данных, как показано ниже:

enter image description here

Столбец V-X (серым цветом) заполняется из формы.Столбец X - это первая дата получения нами платежа, а столбец V - количество месяцев, за которые мы получим платеж.

Я хочу динамически рассчитать значение каждой следующей даты платежа на основе суммы полученных платежей.Например, на изображении выше для ячейки Y2 у меня есть формула = X2 + 30, и я перетаскивал ее вправо, пока она не достигла ячейки AD2.Столбец V является динамическим, но не будет превышать 10, и я всегда хочу увеличить на 30 дней в каждом столбце количество раз в V2.Пример выше, т.е.У меня нет данных в AF2 или AG2, потому что они не нужны.Но если бы значение было 9, тогда оно автоматически добавило бы значение = AE2 + 30 к этой ячейке.

Есть ли способ сделать это без сценария?

Я также хочу повторитьокончательная дата в столбце AH2.Я попытался добиться этого, набрав следующее:

enter image description here

Но я получаю слишком большое число.Как я могу это исправить?

enter image description here

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

паста в Y2:

=ARRAYFORMULA(TO_DATE(IF(LEN(V2:V), 
 {IF(COLUMN(A:A)<$V2:V, EDATE(X2:X, 1), ), 
  IF(COLUMN(B:B)<$V2:V, EDATE(X2:X, 2), ),
  IF(COLUMN(C:C)<$V2:V, EDATE(X2:X, 3), ),
  IF(COLUMN(D:D)<$V2:V, EDATE(X2:X, 4), ),
  IF(COLUMN(E:E)<$V2:V, EDATE(X2:X, 5), ),
  IF(COLUMN(F:F)<$V2:V, EDATE(X2:X, 6), ),
  IF(COLUMN(G:G)<$V2:V, EDATE(X2:X, 7), ),
  IF(COLUMN(H:H)<$V2:V, EDATE(X2:X, 8), ),
  IF(COLUMN(I:I)<$V2:V, EDATE(X2:X, 9), )}, )))


паста в AH2:

=ARRAYFORMULA(TO_DATE(
 IF(AG2:AG<>"", AG2:AG,
 IF(AF2:AF<>"", AF2:AF,
 IF(AE2:AE<>"", AE2:AE,
 IF(AD2:AD<>"", AD2:AD,
 IF(AC2:AC<>"", AC2:AC,
 IF(AB2:AB<>"", AB2:AB,
 IF(AA2:AA<>"", AA2:AA,
 IF(Z2:Z<>"", Z2:Z,
 IF(Y2:Y<>"", Y2:Y, )))))))))))



, если вам все еще нужны 30 дней жесткой статики, тогда:

=ARRAYFORMULA(TO_DATE(IF(LEN(V2:V), 
 {IF(COLUMN(A:A)<$V2:V, X2:X+30, ), 
  IF(COLUMN(B:B)<$V2:V, X2:X+60, ),
  IF(COLUMN(C:C)<$V2:V, X2:X+90, ),
  IF(COLUMN(D:D)<$V2:V, X2:X+120, ),
  IF(COLUMN(E:E)<$V2:V, X2:X+150, ),
  IF(COLUMN(F:F)<$V2:V, X2:X+180, ),
  IF(COLUMN(G:G)<$V2:V, X2:X+210, ),
  IF(COLUMN(H:H)<$V2:V, X2:X+240, ),
  IF(COLUMN(I:I)<$V2:V, X2:X+270, )}, )))

0 голосов
/ 07 февраля 2019

Или

=ArrayFormula(if(V2:V="","",if(column(Y:AG)-column(W:W)>V2:V,"",X2:X+(column(Y:AG)-column(X:X))*30)))

и

=ArrayFormula(if(V2:V="","",X2:X+(V2:V-1)*30))

в Google Sheets.

0 голосов
/ 06 февраля 2019

Поместите это в Y2 и скопируйте в AG2 и уменьшите длину данных:

=IF(COLUMN(A:A)<$V2,X2+30,"")

Затем в AH2

=X2+(30*(V2-1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...