Сканируйте имена столбцов, выбирайте те, которые содержат определенный текст, и запускайте для них функции (SUM, MAX и т. Д.) - PullRequest
1 голос
/ 16 июня 2019

В Google Sheets у меня есть электронная таблица, которая выглядит следующим образом

A1    A2    A3    B1    B2    B3    C1    C2    C3
55    23    21    15    18    15    61    51    51
51    15    15    81    98    13    51    74    65
15    87    89    99    32    72    15    58    51
18    64    15    81    32    15    81    78    98
87    81    32    51    15    35    15    81    12

Я хочу создать отдельный лист, в котором будет найдена сумма / макс / среднее / мин всех именованных столбцов "A".

Есть ли способ создать функцию в ячейке, которая будет (на данный момент, выбираем одну) усреднять все ячейки в одной строке, имена столбцов которых соответствуют определенному текстовому шаблону (например, «A *»)?

Ответы [ 2 ]

0 голосов
/ 16 июня 2019
=ARRAYFORMULA({
 "sum",         SUM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(A1:I)), 
 "where Col1 contains 'A'", 0)), "where Col1 !='' offset 1", 0)*1);
 "max",         MAX(QUERY(TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(A1:I)), 
 "where Col1 contains 'A'", 0)), "where Col1 !='' offset 1", 0)*1);
 "average", AVERAGE(QUERY(TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(A1:I)), 
 "where Col1 contains 'A'", 0)), "where Col1 !='' offset 1", 0)*1);
 "min",         MIN(QUERY(TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(A1:I)), 
 "where Col1 contains 'A'", 0)), "where Col1 !='' offset 1", 0)*1)})

0


=ARRAYFORMULA(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 QUERY(TRANSPOSE(QUERY(TRANSPOSE(TO_TEXT(Raw!$A1:$AR)), 
 "where Col1 contains '"&REGEXEXTRACT(C1, ".")&"'", 0)), 
 "where Col1 !='' offset 1", 0)*1), 
 "select "&REGEXREPLACE(JOIN( , IF(LEN(Raw!$C2:$C),
 "max(Col"&ROW(Raw!$C2:$C)-ROW(Raw!$C2)+1&"),", )), ".\z", "")&"")),
 "select Col2"))

0

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

Вы можете использовать формулу массива следующим образом:

ArrayFormula(average(if(left(A1:I1,1)="A",A2:I)))

enter image description here

Или, если предпочтительнее, использовать сопоставление с образцом для большей гибкости:

=ArrayFormula(average(if(regexmatch(A1:I1,"^A"),A2:I)))

(с учетом регистра).

...