/**
* Рассчитывает кусочно-константную функцию
*
* @author Boew Grigory (ff.nspu@gmail.com)
* @param {Array} data Входные данные (аргумент)
* @param {Array} criteria Массив критериев [от, до, значение]
* @param {any} [defaultValue=""] Значение по умолчанию - то что подставляется, если аргумент не подходит ни под один из критериев
*/
function piecewiseConstant(data, criteria, defaultValue="-"){
criteria = criteria
.map(cr=>({ // convert to objects
fromValue: cr[0],
toValue: cr[1],
value: cr[2],
}))
.filter(cr=>cr.fromValue!=="" && cr.toValue!==""); // filter empty criteria
return data.map(row=>row.map(el=>{
let foundCriteria = criteria.find(cr=>(el>=cr.fromValue)&&(el<cr.toValue));
if (foundCriteria!==undefined){
return foundCriteria.value;
}else{
return defaultValue;
};
}));
};
=query(IMPORTRANGE("https://docs.google.com/spreadsheets...";"'3.0 Сделки GF'!A1:Z"); "select * where Col6 contains 'К1П1'")
Условное форматирование - Своя формула
=B1="красный"
без уменьшения количества формул
мне нужны только csv-шки
Worksheets("Sheet1").Range("A" & i) = Replace(xcell, " ", x)
xcell = Replace(xcell, ".", x)
xcell = Replace(xcell, ",", x)
xcell = Replace(xcell, "(", x)
xcell = Replace(xcell, ")", x)
xcell = Replace(xcell, " ", x)
Worksheets("Sheet1").Range("A" & i) = xcell
let value = range.getCell(1, 1).getValue()
data.filter(row=>row[0]===value)
range.setValues(outData)
=join(
"/"
;ТРАНСП(unique(
ТРАНСП(split(
join(
"/"
;ArrayFormula(
ЕСЛИОШИБКА(
ВПР(
split(
join(
"/"
;ArrayFormula(
ЕСЛИОШИБКА(
ВПР(
split(
ВПР(A1;FILTER(A:B;A:A<>"");2;0)
;"/"
)
;FILTER(A:B;A:A<>"")
;2
;0
)
;split(
ВПР(A1;FILTER(A:B;A:A<>"");2;0)
;"/"
)
)
)
)
;"/"
)
;FILTER(A:B;A:A<>"")
;2
;0
)
;split(
join(
"/"
;ArrayFormula(
ЕСЛИОШИБКА(
ВПР(
split(
ВПР(A1;FILTER(A:B;A:A<>"");2;0)
;"/"
)
;FILTER(A:B;A:A<>"")
;2
;0
)
;split(
ВПР(A1;FILTER(A:B;A:A<>"");2;0)
;"/"
)
)
)
)
;"/"
)
)
)
)
;"/"
))
))
)