Формула массива Google Sheet SUMIF не работает - PullRequest
1 голос
/ 04 марта 2020

в моем листе я хочу вычислить дни, пока не будет достигнуто определенное значение. Я использую эту формулу для этого. https://infoinspired.com/google-docs/spreadsheet/target-sum-reached-row-in-google-sheets/

Несколько примеров работали без проблем, но на этот раз я получил неправильные значения ...: (

В моем примере: https://docs.google.com/spreadsheets/d/1MYYNZB94RdF21hg60-mERCy2hP48c8IhkprV-LBvZrs/edit?usp=sharing

во вкладке «ЗДЕСЬ» Я хочу суммировать ячейки F2: F315, пока значение 120000 (ячейка J9) не будет достигнуто в первый раз. Выходными данными должны быть «дни» или количество сумм ячеек.

В качестве результата я получаю 265, даже должно быть 191 или около того.

=countif(ArrayFormula(sumif(row(A2:A315),"<="&row(A2:A315),F2:F315)),"<="&J9)

Чтобы перепроверить, я создал вспомогательный столбец, который добавляет доход (столбец F) в столбце H. Согласно этому вспомогательному столбцу первый раз, когда> 120000 достигается на H193

Я просто не понимаю ... возможно, у меня ошибка logi c в моем ум

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Если я не понимаю вопрос, я думаю, что эта довольно простая формула должна сделать это быстро ... Для фактической даты:

=MIN(FILTER(A2:A,SUMIF(ROW(F2:F),"<="&ROW(F2:F),F2:F)>=J9))

Для количества дней:

=MIN(FILTER(A2:A,SUMIF(ROW(F2:F),"<="&ROW(F2:F),F2:F)>=J9))-A2+1
0 голосов
/ 04 марта 2020

Попробуйте:

=ARRAYFORMULA(DAYS(INDIRECT(ADDRESS(MIN(IF(MMULT(TRANSPOSE((ROW(F2:F)<=
 TRANSPOSE(ROW(F2:F)))*F2:F), SIGN(F2:F)^0)>J9, ROW(A2:A), )), 1)), A2))

0


ОБНОВЛЕНИЕ для ускорения:

=ARRAYFORMULA(DAYS(INDIRECT(ADDRESS(MIN(IF(MMULT(TRANSPOSE((ROW(
 INDIRECT("F2:F"&COUNTA(F2:F)+1))<= TRANSPOSE(ROW(
 INDIRECT("F2:F"&COUNTA(F2:F)+1))))*
 INDIRECT("F2:F"&COUNTA(F2:F)+1)), SIGN(
 INDIRECT("F2:F"&COUNTA(F2:F)+1))^0)>J9, ROW(A2:A), )), 1)), A2))
...