ArrayFormula для сброса промежуточного итога в Google Sheets - PullRequest
0 голосов
/ 31 октября 2019

Я ищу (не перетаскивая) ArrayFormula с промежуточной суммой, которая сбрасывается каждый раз, когда изменяется значение в столбце alt. пример:

          desired result
a    2          2
a    3          5
a    5         10
b    2          2
c    3          3
c    4          7

, поэтому при каждом изменении значения в 1-м столбце сумма сбрасывается. таблица всегда сортируется, если это имеет значение.


не сбрасываемые формулы регулярных итоговых сумм:

  • =ARRAYFORMULA(SUMIF(ROW(B1:B6), "<="&ROW(B1:B6), B1:B6))
  • =ARRAYFORMULA(MMULT(TRANSPOSE((ROW(B1:B6)<=TRANSPOSE(ROW(B1:B6)))*B1:B6), SIGN(B1:B6)))

Я пытался как-то объединить это с этой формулой счетчика, но пока не повезло:

=ARRAYFORMULA(COUNTIFS(A1:A6, A1:A6, ROW(A1:A6), "<="&ROW(A1:A6)))

также я сделалнекоторые исследования, но нашли только скрипт , который мне не интересует или перетаскивает / MS Excel формулы решения, такие как:

=SUM(INDIRECT("L"&SUMPRODUCT(MAX(($H$2:H4=0)*ROW($H$2:H4)))+1):L5)
-----------------------------------------------------------------------------------------------------------
=SUM(L$3:L5)-SUM(M$4:M4)
-----------------------------------------------------------------------------------------------------------
=SUM($C$2:$C2)-IFERROR(SUM($C$2:OFFSET($C$1,LOOKUP(2,1/($B$2:$B2="reset"),ROW($B$2:$B2)-ROW($B$2)+1),0)),0)
-----------------------------------------------------------------------------------------------------------
=MOD((ROW()-ROW(E$1))*1,(1+5))

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Кроме того, вы также можете попробовать

=ArrayFormula(if(len(A:A),mmult(--transpose(if( (transpose(row(A:A))>=row(A:A))*(A:A=transpose(A:A)),B:B, 0)),row(A:A)^0),))

Это также должно работать, если данные не отсортированы.

enter image description here

1 голос
/ 31 октября 2019

Если таблица всегда сортируется по столбцу А, вы можете просто сделать:

=ARRAYFORMULA(SUMIF(ROW(B1:B6), "<="&ROW(B1:B6), B1:B6)-SUMIF(A1:A6, "<"&A1:A6, B1:B6))

enter image description here

Если таблица не отсортирована, вывсе еще может сделать это с помощью vlookup:

=ARRAYFORMULA(SUMIF(ROW(B1:B6), "<="&ROW(B1:B6), B1:B6)-SUMIF(row(A1:A6), "<"&vlookup(A1:A6,{A1:A6,row(A1:A6)},2,false), B1:B6))

enter image description here

...