Google表格 - 相当于FOR循环

问题描述 投票:0回答:3
A1 = 8
A2 = 14

我不知道Google表格中是否存在等效的内容,但我想要做的是,对于A1中的每5个,我想减去A2中的5个并使其成为A3中的一个字符串。所以在这个例子中A3 = 14/9和如果A1 = 12; A3 = 14/9/4这甚至应该在A1 = 16; A3 = 14/9/4/-1的情况下进入负面

最终,我想尽可能避免使用API​​ / Script系统。现在,我能想到的唯一方法就是大量的IF()处理程序。

这是我目前正在使用的公式,但可以理解的是,当IF()耗尽时,这是一个烂摊子并停止工作。

=A2&
  IF(A1>5, 
   "/"&A2-5&
   IF(A1>10, 
    "/"&A2-10&
    IF(A1>15, 
     "/"&A2-15&
     IF(A1>20, 
      "/"&A2-20
     , "")
    , "")
   , "")
  , "")
google-sheets google-sheets-formula running-total
3个回答
1
投票
=ARRAYFORMULA(QUERY(IF(ROW(INDIRECT("A1:A"&QUOTIENT(A1, 5)+1)),
 MMULT(TRANSPOSE((     ROW(INDIRECT("A2:A"&QUOTIENT(A1, 5)+2))<=
       TRANSPOSE(      ROW(INDIRECT("A2:A"&QUOTIENT(A1, 5)+2))))*
      {A2; TRANSPOSE(SPLIT(REPT(5*-1&"♦",  QUOTIENT(A1, 5)), "♦"))}), 
 SIGN({A2; TRANSPOSE(SPLIT(REPT(5*-1&"♦",  QUOTIENT(A1, 5)), "♦"))})^2), 
 IFERROR(1/0)), "limit "&QUOTIENT(A1, 5)&" offset 1"))

0


1
投票

试试这样:

=A2-QUOTIENT(A1, 5)*5

0


0
投票
=IFERROR(ARRAYFORMULA(TO_TEXT(JOIN("/", 
                   IF(ROW(INDIRECT("A1:A"&QUOTIENT(A1, 5)+1)),
 MMULT(TRANSPOSE((    ROW(INDIRECT("A2:A"&QUOTIENT(A1, 5)+2))<=
       TRANSPOSE(     ROW(INDIRECT("A2:A"&QUOTIENT(A1, 5)+2))))*
      {A2; TRANSPOSE(SPLIT(REPT(5*-1&"♣", QUOTIENT(A1, 5)), "♣"))}), 
 SIGN({A2; TRANSPOSE(SPLIT(REPT(5*-1&"♣", QUOTIENT(A1, 5)), "♣"))})^2), 
 IFERROR(1/0))))))

0

© www.soinside.com 2019 - 2024. All rights reserved.