Как сложить самую длинную последовательную серию положительных / отрицательных значений - PullRequest
1 голос
/ 25 апреля 2019

В диапазоне A1: A100 есть даты. В диапазоне B1: B100 имеются положительные и отрицательные числа. 1/2/2019 -5
1/3/2019 -51
1/4/2019 100
1/7/2019 27
1/8/2019 -35
1/9/2019 52
1/10/2019 26
1/11/2019 19
1/12/2019 -42
13.01.2009 -213
14.01.2009 -79

Теперь я выяснил, как найти самую длинную серию последовательных положительных и отрицательных значений. Тем не менее, я также хотел бы найти сумму этих полос. В идеале я бы не хотел использовать вспомогательные столбцы. (Я прошу прощения за плохое форматирование таблицы.)

Я нашел решение, которое работает в Excel, но по какой-то причине не работает в Google Sheets, доступно здесь: https://www.mrexcel.com/forum/excel-questions/330468-sum-longest-streak.html Предоставленная формула при копировании в Google Sheets приводит к ошибке, указывающей на отсутствие допустимого ввода для функция small (). Я сравнил Excel с Google Sheets бок о бок, и формула была успешной в Excel, но не в Sheets.

Положительная полоса: ArrayFormula (MAX (ЧАСТОТА (ЕСЛИ (НОМЕР (B: B), IF (B: B> = 0, ROW (B: B))), IF (B: B <0, ROW (B) : B))))) </p>

Отрицательная полоса: ArrayFormula (МАКС (частоты (ПЧ (B1: B99 <0, А1: А99), ЕСЛИ (B1: B99> = 0; A1: A99))))

Может быть более 1 длинной полосы. Я хотел бы вернуть тот, у кого самая большая сумма, если это возможно.

Сумма положительных полос должна составлять 97, а отрицательных - -334.

1 Ответ

0 голосов
/ 11 июня 2019

Похоже, что решение Excel, которое вы цените, использует вспомогательные столбцы, поэтому вставьте новую строку 1 и в C2:

=if(and($B2>0,sign($B1)=sign($B2)),C1+1,1)

Скопируйте в D2, измените > на < и скопируйте C2: D2 вниз, чтобы удовлетворить. Тогда:

=sum(offset(indirect("C"&match(max(C:C),C:C,0)),1-max(C:C),-1,max(C:C),1))

и скопируйте вправо.

Это работает для вашего образца, но не находит наибольшую / наименьшую сумму для полос одинаковой длины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...