#google-sheets #google-sheets-formula #cumulative-sum
#google-sheets #google-sheets-формула #кумулятивная сумма
Вопрос:
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()
они заканчиваются.
=A2amp;
IF(A1>5,
"/"amp;A2-5amp;
IF(A1>10,
"/"amp;A2-10amp;
IF(A1>15,
"/"amp;A2-15amp;
IF(A1>20,
"/"amp;A2-20
, "")
, "")
, "")
, "")
Комментарии:
1. как вы получили разделение «14/9»?
2. Потому что 14-5 = 9. Я хочу добавлять каждый последующий результат в одну строку, разделенную
/
Ответ №1:
=ARRAYFORMULA(QUERY(IF(ROW(INDIRECT("A1:A"amp;QUOTIENT(A1, 5) 1)),
MMULT(TRANSPOSE(( ROW(INDIRECT("A2:A"amp;QUOTIENT(A1, 5) 2))<=
TRANSPOSE( ROW(INDIRECT("A2:A"amp;QUOTIENT(A1, 5) 2))))*
{A2; TRANSPOSE(SPLIT(REPT(5*-1amp;"♦", QUOTIENT(A1, 5)), "♦"))}),
SIGN({A2; TRANSPOSE(SPLIT(REPT(5*-1amp;"♦", QUOTIENT(A1, 5)), "♦"))})^2),
IFERROR(1/0)), "limit "amp;QUOTIENT(A1, 5)amp;" offset 1"))
Комментарии:
1. запуск всего мода
2. Не совсем то, что я хотел, но с несколькими изменениями это работает. Я изменил его
=A2amp;if(A1>5, "/"amp;JOIN(...Stuff...), "")
для правильного форматирования так, как хотел, но в остальном он отлично работает. Большое спасибо, я оставлю этот вопрос на потом, чтобы посмотреть, что еще появится, но прямо сейчас это выглядит как лучший ответ.3. Это хороший ответ, пока у меня не возникнут проблемы в этом сообществе из-за того, что я слишком рано пометил ответы как правильные. Так что теперь я предпочитаю подождать хотя бы день.
Ответ №2:
Комментарии:
1. Это дало мне конечный результат. Я добавлю уточнение формулы, которую я в настоящее время использую для получения желаемого результата.
Ответ №3:
=IFERROR(ARRAYFORMULA(TO_TEXT(JOIN("/",
IF(ROW(INDIRECT("A1:A"amp;QUOTIENT(A1, 5) 1)),
MMULT(TRANSPOSE(( ROW(INDIRECT("A2:A"amp;QUOTIENT(A1, 5) 2))<=
TRANSPOSE( ROW(INDIRECT("A2:A"amp;QUOTIENT(A1, 5) 2))))*
{A2; TRANSPOSE(SPLIT(REPT(5*-1amp;"♣", QUOTIENT(A1, 5)), "♣"))}),
SIGN({A2; TRANSPOSE(SPLIT(REPT(5*-1amp;"♣", QUOTIENT(A1, 5)), "♣"))})^2),
IFERROR(1/0))))))