如何水平复制公式可变次数? - 谷歌表格

How to copy formula horizontally a variable number of times? - GoogleSheets

我有一个如下所示的数据集:

V 到 X 列(灰色)由表单填充。 X 列是我们收到付款的第一个日期,V 列是我们将收到付款的月数。

我想根据收到的付款金额动态计算每个下一个付款日期的价值。例如,在上图中的单元格 Y2 中,我有一个公式 =X2+30,我将它向右拖动,直到它到达单元格 AD2。 V 列是动态的,但不会超过 10,我总是想在 V2 中的每列中增加 30 天的次数。上面的例子就是。我在 AF2 或 AG2 中没有数据,因为不需要。但如果值为 9,那么它会自动将值 =AE2+30 添加到该单元格。

有没有不用脚本的方法?

我还想在 AH2 列中重复最后的日期。我试图通过输入以下内容来实现这一点:

但是我得到的数字太大了。我该如何纠正?

将其放入 Y2 并复制到 AG2 并向下复制数据的长度:

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

然后在AH2

=X2+(30*(V2-1))

在 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, )}, )))

=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 张中。