Для такой задачи ожидается какое-то комплексное решение, т.к. поиск исключительно по условию вхождения элемента несколько умаляет достоинства табличных расчетов.
Для пользовательской функции
/**
* Returns a consecutive array of the counts of sequences.
*
* @param {Sheet3!B1:B34} reference A range.
* @returns The counts of sequences.
* @customfunction
*/
function COUNT_CONSECUTIVE( reference ){
try{
return reference.reduce(function(p, v, i, arr){
if(i === 0 || arr[i][0] !== arr[i - 1][0])
p.push([v[0], 1]);
else
p[p.length-1][1]++;
return p;
}, []);
} catch(err){
return err.message
}
}
для диапазона
A2:A10
верно, что все группы без номеров с их количествами можно получить как
=COUNT_CONSECUTIVE(A2:A10)
только для
'cat'
верно
=QUERY(COUNT_CONSECUTIVE(A2:A9),"select max(Col2) where Col1='cat' label max(Col2)''")
Для формулы
=ARRAYFORMULA(QUERY({A2:A10,VLOOKUP(ROW(A2:A10),IF(IF(A2:A10<>A1:A9,ROW(A2:A10),0)>0,{ROW(A2:A10),IF(A2:A10<>A1:A9,ROW(A2:A10),0)},),2),IF(IF(A2:A10<>A1:A9,ROW(A2:A10),0)=0, COUNTIFS(ROW(A2:A10),">=" & VLOOKUP(ROW(A2:A10),IF(IF(A2:A10<>A1:A9,ROW(A2:A10),0)>0,{ROW(A2:A10),IF(A2:A10<>A1:A9,ROW(A2:A10),0)},),2),ROW(A2:A10),"<="&ROW(A2:A10)),1)},"select Col1,max(Col3) group by Col2,Col1 label max(Col3)''"))
для диапазона
A2:A10
верно, что все группы без номеров с их количествами можно получить как
только для
'cat'
верно
=ARRAYFORMULA(QUERY(QUERY({A2:A10,VLOOKUP(ROW(A2:A10),IF(IF(A2:A10<>A1:A9,ROW(A2:A10),0)>0,{ROW(A2:A10),IF(A2:A10<>A1:A9,ROW(A2:A10),0)},),2),IF(IF(A2:A10<>A1:A9,ROW(A2:A10),0)=0, COUNTIFS(ROW(A2:A10),">=" & VLOOKUP(ROW(A2:A10),IF(IF(A2:A10<>A1:A9,ROW(A2:A10),0)>0,{ROW(A2:A10),IF(A2:A10<>A1:A9,ROW(A2:A10),0)},),2),ROW(A2:A10),"<="&ROW(A2:A10)),1)},"select Col1,max(Col3) group by Col2,Col1 label max(Col3)''"),"select max(Col2) where Col1='cat' group by Col1 label max(Col2)''"))
Таблицу с примером выложу в ближайшее время.
P.S. Знающие люди подсказывают, что для конкретного значения
'cat'
справедливо также
=ARRAYFORMULA(MAX(FREQUENCY(ROW(A2:A10),ROW(A2:A10)*(A2:A10<>"cat")))-1)