Google Sheets - 相当于一个 FOR 循环
Google Sheets - Equivalent of a FOR loop
A1 = 8
A2 = 14
我不知道 Google 表格中是否存在与此等效的内容,但我想做的是,对于 A1
中每 5 的倍数,我想减去 5 A2
并使其成为 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
, "")
, "")
, "")
, "")
试试这样:
=A2-QUOTIENT(A1, 5)*5
=ARRAYFORMULA(QUERY(IF(ROW(INDIRECT("A1:A""IENT(A1, 5)+1)),
MMULT(TRANSPOSE(( ROW(INDIRECT("A2:A""IENT(A1, 5)+2))<=
TRANSPOSE( ROW(INDIRECT("A2:A""IENT(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 ""IENT(A1, 5)&" offset 1"))
=IFERROR(ARRAYFORMULA(TO_TEXT(JOIN("/",
IF(ROW(INDIRECT("A1:A""IENT(A1, 5)+1)),
MMULT(TRANSPOSE(( ROW(INDIRECT("A2:A""IENT(A1, 5)+2))<=
TRANSPOSE( ROW(INDIRECT("A2:A""IENT(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))))))
A1 = 8
A2 = 14
我不知道 Google 表格中是否存在与此等效的内容,但我想做的是,对于 A1
中每 5 的倍数,我想减去 5 A2
并使其成为 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
, "")
, "")
, "")
, "")
试试这样:
=A2-QUOTIENT(A1, 5)*5
=ARRAYFORMULA(QUERY(IF(ROW(INDIRECT("A1:A""IENT(A1, 5)+1)),
MMULT(TRANSPOSE(( ROW(INDIRECT("A2:A""IENT(A1, 5)+2))<=
TRANSPOSE( ROW(INDIRECT("A2:A""IENT(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 ""IENT(A1, 5)&" offset 1"))
=IFERROR(ARRAYFORMULA(TO_TEXT(JOIN("/",
IF(ROW(INDIRECT("A1:A""IENT(A1, 5)+1)),
MMULT(TRANSPOSE(( ROW(INDIRECT("A2:A""IENT(A1, 5)+2))<=
TRANSPOSE( ROW(INDIRECT("A2:A""IENT(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))))))