Google Sheets - Эквивалент цикла FOR - PullRequest
0 голосов
/ 20 апреля 2019
A1 = 8
A2 = 14

Я не знаю, существует ли эквивалент для этого в Google Sheets, но я пытаюсь сделать так, чтобы для каждого кратного 5 в A1 я хотел бы вычесть 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
     , "")
    , "")
   , "")
  , "")

Ответы [ 3 ]

1 голос
/ 20 апреля 2019
=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 голос
/ 20 апреля 2019

попробуйте так:

=A2-QUOTIENT(A1, 5)*5

0

0 голосов
/ 20 апреля 2019
=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

...