2015-08-27 2 views
0

У меня есть столбец значений от приблизительно -20 to 20. В пределах этих значений у меня есть определенные коллекции, образующие «пики» (если данные должны были быть графически), как это:Ближайшая ячейка со значением ниже определенного значения в excel

-7,431377404 -0,123504621 8,267563041 11,90999127 10,14175866 1,613639202 -7,170097474 -6,826058515

Я определяю все, что является частью «пика», которое должно быть выше значения 3. Как выбрать все значения в пределах одного «пика» и выбрать максимум? В приведенном выше примере я хотел бы выбрать значение 11.91. Существуют разные примеры этих «пиков» по ​​моим данным. Например, вот еще:

0,571340419 0,543676911 3,162139566 4,132734389 1.649930702 -0.201880797

И здесь я хотел бы 4.13 быть выбран. У меня слишком много данных, чтобы делать каждый из них вручную.

По существу, если я представляю свои данные на графике, я хочу что-то, что выбирает вершину каждого пика. Это можно сделать?

Большое спасибо.

+0

Является й есть ли какие-либо критерии, которые отделяют каждый набор данных друг от друга? Например, как мы можем начинать с '-7.431 ...' и заканчивать на '-6.826 ...' в вашем первом примере? Есть ли дата или какой-то идентификатор? Иными словами, как вы различаете коллекции? – Soulfire

+0

Также - вы имеете в виду только вершины, или долины? т.е. в вашем примере выше, если бы было значение -12.1, вы бы хотели, чтобы это выбрали вместо 11, потому что оно имеет дальнейшее расстояние от 0? –

+0

Нет критериев, кроме того, что он находится дальше в столбце данных, которые у меня есть, если это то, что вы имеете в виду? Это все часть одного большого набора. И да, только пики. Не долины. –

ответ

0

Эта формула будет найти значение пика в данных, при условии, что это все один «набор» данных, и предполагая, что он находится в колонке А:

=MAX(A:A) 

Это будет дополнительно проверить, чтобы обеспечить что это значение по меньшей мере 3:

=IF(MAX(A:A)>=3,MAX(A:A),"") 

Это дополнительно даст вам расположение этой ячейки, если это важно для вас (будет сообщен номер строки):

=IF(MAX(A:A)>=3,MATCH(MAX(A:A),A:A,0),"") 

Редактировать, чтобы определить индивидуальный пик в каждой группе непрерывных ячеек не менее +3. Это решение формулы без массива, поскольку Том Шарп уже представил эту альтернативу ниже. Если вы понимаете Формулы массива, это, скорее всего, ваше предпочтительное решение.

Сначала используйте вспомогательный столбец - это будет подсчитать каждый раз, когда он вводит новый диапазон, по меньшей мере 3. В ячейке B1, чтобы жестко 1. В ячейке B2 ввести следующее и перетащить вниз:

=IF(AND(A1<3,A2>=3),B1+1,B1) 

Это проверяет, была ли последняя строка меньше 3, а текущая строка - не менее 3. Если это правда, то это новая группировка.

Затем в столбце С, начиная с C2, поместить следующее и перетащить вниз - это будет держать чек бега для того, что наибольшее значение в этой группировки является [жестко С1, как C1 = A1]:

=IF(B2=B1,MAX(A2,C1),A2) 

Тогда для любой данной группировки, используйте эту формулу, чтобы увидеть самый высокий пик там [в приведенном здесь примере, он проверяет, самый высокий пик в 5-й группировке]:

=INDEX(C:C,MATCH(5+1,B:B,0)) 

нужен будет играть вокруг с для первого и последние значения, но это общая идея. Опять же, решение Формулы Array, вероятно, предпочтительнее.

+0

Я думаю, что это даст глобальный максимум и OP после локальных максимумов –

+0

@MattS вы могли бы пояснить, как вы определяете, что такое «набор» данных на самом деле? В своем комментарии там вы говорите «все его часть одного большого набора» ... что это значит? –

+0

Это один столбец значений, приблизительно 8000 из них. –

0

Это та вещь, я думаю о том: -

=IF(A2>=3,MAX(INDEX(A$1:A1,MAX(ROW(B$1:B1)*(B$1:B1=FALSE))):INDEX(A3:A$15,MATCH(FALSE,B3:B$15,0))),"") 

быть введены в С2 как формулу массива и снесены.

Сначала я установил все ячейки в столбце B в FALSE, если столбец A < 3 и TRUE if> = 3, поэтому он должен искать по каждому пику от последнего FALSE до следующего.

enter image description here

Это можно сделать проще, если пики и впадины пронумерованы начиная с 1, в B2 и используя эту формулу с B3 и далее: -

=IF(OR(AND(A2>3,A3<=3),AND(A3>3,A2<=3)),B2+1,B2) 

Тогда эта формула не-массив может быть использовали начиная с C2: -

=IF(A2>3,MAX(INDEX(A$1:A1,MATCH(B2-1,B$1:B1)) 
:INDEX(A3:A$15,MATCH(B2+1,B3:B$15,0))),"") 

enter image description here