【问题标题】:Google Sheets - Equivalent of a FOR loopGoogle 表格 - 相当于 FOR 循环
【发布时间】:2019-04-20 11:51:55
【问题描述】:
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/脚本系统。现在我能想到的唯一方法是使用大量 IF() 处理程序。

这是我目前使用的公式,但可以理解的是,当IF() 用完时,它会变得一团糟并且停止工作。

=A2&
  IF(A1>5, 
   "/"&A2-5&
   IF(A1>10, 
    "/"&A2-10&
    IF(A1>15, 
     "/"&A2-15&
     IF(A1>20, 
      "/"&A2-20
     , "")
    , "")
   , "")
  , "")

【问题讨论】:

  • 你是如何得到“14/9”除法的?
  • 因为 14-5=9。我想将每个连续结果添加到由/ 分隔的单个字符串中

标签: google-sheets google-sheets-formula cumulative-sum


【解决方案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"))

【讨论】:

  • 运行总模组
  • 不完全是我想要的,但经过一些调整就可以了。我将它调整为=A2&amp;if(A1&gt;5, "/"&amp;JOIN(...Stuff...), ""),以按照我想要的方式进行一些正确的格式化,但它在其他方面效果很好。非常感谢,我会把这个问题留到以后看看还有什么问题,但现在这看起来是最好的答案。
  • 这是一个很好的回应,直到我在这个社区中因为过早将答案标记为正确而遇到麻烦。所以现在我宁愿至少等一天。
【解决方案2】:

像这样尝试:

=A2-QUOTIENT(A1, 5)*5

【讨论】:

  • 这给了我最终的结果。我将添加对我目前用来产生所需结果的公式的说明。
【解决方案3】:
=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))))))

【讨论】:

    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2018-07-28
    • 2011-06-04
    • 2016-09-21
    相关资源
    最近更新 更多