2012-06-19 14 views
2

Я хотел бы рассчитать максимальное значение минимальных значений каждой строки в электронной таблице (особенно в Google Таблицах), которая больше 0. Надеюсь, это имеет смысл. Мои данные:Найти максимальные минимальные значения

0 6 7 8 1   
0 12 21 22 21   
0 10  18 24 
0 7 9 1 17   
0 16 16 20    

Итак, Я хочу ArrayFormula какой-то, который будет генерировать:

1 
12 
10 
1 
16 

из которых я мог бы получить максимум. Я прочитал и испытал, что очевидное решение не работает, что:

=max(ArrayFormula(min(if(A:Z>0,A:Z,""))) 

Причина в том ArrayFormula(min(... части ее возвращает минимум всего набора данных, что это больше, чем 0, что 1 здесь , Если нет подходящего обходного пути, я подумаю о том, чтобы каким-то образом изменить мои данные или вычислить минимумы в отдельных ячейках, но я действительно надеюсь на одноэтапное решение.

ответ

0

max ArrayFunction не существует, поэтому единственный способ - обходной путь. Предположим, у вас есть некоторые номера в диапазоне A1:C5. полученный диапазон D1:D5:

enter image description here

Все, что вам нужно, это единая формула в ячейке D1:

=QUERY(QUERY({ArrayFormula(REGEXEXTRACT(TRANSPOSE(SPLIT(ArrayFormula(CONCATENATE(row(A1:C5)&"*"&A1:C5&"/")),"/")),"\d+")),ArrayFormula(REGEXEXTRACT(TRANSPOSE(SPLIT(ArrayFormula(CONCATENATE(row(A1:C5)&"*"&A1:C5&"/")),"/")),"[*](\d+)")*1)},"select Col1, min(Col2) where Col2 <>0 group by Col1 label min(Col2) ''"),"select Col2") 

Будьте осторожен, он может работать медленно.

Основная часть формулы является запрос:

select Col1, min(Col2) where Col2 <>0 group by Col1... 

изменить его, чтобы получить разные результаты (макс, мин, сумма, ср, некоторые calculatrions и так далее)

Если кто-то хочет, чтобы исследовать формула, вот worksheet с пошаговым решением.

0

с данными в диапазоне A1: E5, в F1 и скопировано вниз:

=if(small(A1:E1,1)=0,small(A1:E1,2),small(A1:E1,1)) 

или

=ArrayFormula(min(if(A2:E2>0,A2:E2,""))) 

должен возвращать минимальное значение больше 0 для каждой строки, для которых максимальная может рассчитывается с:

=max(F1:F5) 
0

Кроме того, чтобы получить минимальное значение для каждой строки (с учетом выходного массива за один раз), попробуйте:

=index(ArrayFormula(transpose(query(transpose(if(A:C>0, A:C,)),"select "&join("),","min(Col"&row(indirect("A1:A"&count(A:A))))&")"))),,2) 
Смежные вопросы