2016-02-10 6 views
0

У меня есть следующая маленькая таблица. Мне нужна формула, которая найдет число значений, где совокупная сумма (столбца B) меньше некоторого порога (tx).Excel - количество записей ниже совокупного порога без вспомогательной колонки

Я попытался

{=MIN((SUM(OFFSET(B1,0,0,A1:A17))>tx)*A1:A17)-1} 

но OFFSET не кажется, arrayable так. Очевидно, это было бы тривиально со вспомогательной колонкой, но по определенным причинам это невозможно.

Так что правильный ответ здесь должен быть 10.

Ого = .8

A B 
1 0.112106465 
2 0.110981698 
3 0.091959216 
4 0.082163441 
5 0.073292066 
6 0.072407529 
7 0.071646289 
8 0.061646797 
9 0.06011448 
10 0.057566381 
11 0.050341978 
12 0.048227061 
13 0.043207335 
14 0.03940462 
15 0.012914194 
16 0.007603446 
17 0.004417003 

ответ

2

Вы на самом деле не ищете MIN; скорее это должно быть MAX, которое следует за вашим состоянием.

В Е7 в качестве стандартного (не-массив) формулы,

=AGGREGATE(14, 6, ROW(1:17)/(SUBTOTAL(9, OFFSET(B1, 0, 0, ROW(1:17), 1))<D7), 1) 

aggregate_max_less_than

+0

Спасибо. Я пытался вытащить 1 меньше минимального индекса, где он был превзойден, таким образом, используя функцию MIN(). Можете ли вы объяснить, что SUBTOTAL() делает этот SUM()? Благодаря! – dashnick

+0

Я не знаю, могу ли я точно описать различия в поведении здесь. Достаточно сказать, что процессы [SUBTOTAL] (https://support.office.com/en-us/article/SUBTOTAL-function-e27c301c-be9a-458b-9d12-b9a2ce3c62af) варьируются в более индивидуальном или заблокированном режиме, чем [SUM] (https://support.office.com/en-us/article/sum-function-0761ed42-45aa-4267-a9fc-a88a058c1a57). Используйте команду [Evaluate Formula] (https://goo.gl/Vl25be), чтобы увидеть различия во внутренних результатах. – Jeeped

+1

Я думаю, что я понял: короче, учитывая двумерный массив (который в этом случае является возвратом функции OFFSET()), SUM() просто вернет скаляр, а SUBTOTAL (9 ,. ..) вернет 1-строчный массив столбцов сумм строк (это то, что мы хотим). – dashnick

0

Я предпочитаю следующую формулу массива ** из-за его энергонезависимостью:

=MATCH(TRUE,MMULT(0+(ROW(B1:B17)>=TRANSPOSE(ROW(B1:B17))),B1:B17)>=0.8,0)-1

С уважением

0

Наиболее емким способ сделать это я нашел

=SUM(--(SUBTOTAL(9,OFFSET(B1,,,A1:A17))<0.8)) 

введена как формула массива, или, что то же самое,

=SUMPRODUCT(--(SUBTOTAL(9,OFFSET(B1,,,A1:A17))<0.8)) 
+0

Другим вариантом является '= MATCH (0,8, SUMIF (A1: A17," <= "& A1: A17, B1: B17))' также энергонезависимый –

+0

Nice! используя порядок сортировки. – dashnick