Можно наколдовать формулу, но очень простой скрипт решает проблему более изящно
/**
* @OnlyCurrentDoc
*/
/**
*
* The RAINREPORT function
*
* @param {rain} rain Two-column data array
* @param {boolean} skipEmpty
* @return {any[][]}
* @customfunction
*/
function RAINREPORT(rain, skipEmpty = true) {
const _rain_ = rain.map((row) => row[0]);
const _cloud_ = rain.map((row) => row[1]);
const _report_ = {};
_rain_.forEach((item, i) => {
if (_cloud_[i] === '' && skipEmpty === true) return;
if (!Object.prototype.hasOwnProperty.call(_report_, _cloud_[i]))
_report_[_cloud_[i]] = {
data: [],
name: _cloud_[i],
};
if (_report_[_cloud_[i]].data.indexOf(item) === -1)
_report_[_cloud_[i]].data.push(item);
});
return Object.keys(_report_)
.sort()
.map((key) => [key, ..._report_[key].data.sort()]);
}
Формула
=TRANSPOSE(RAINREPORT(
QUERY(
ДАННЫЕ_ВЫДАЧИ;
"select C,E where " &
TEXTJOIN(" and ";1;IF(A1="ВСЕГО";"";"A='" & A1 & "'");"D < " & REGEXEXTRACT(B1;"\d+")))
))
Таблица с примером
https://docs.google.com/spreadsheets/d/11Fp2Tx8BGX...