function arraysDiff(arr1, arr2) {
arr1 = arr1.flat(2);
arr2 = arr2.flat(2);
arr1 = arr1.filter(el=>arr2.indexOf(el)===-1);
arr1 = arr1.map(el=>[el]);
return arr1;
}
А, В, Е, К, М, Н, О, Р, С, Т, У и Х
([АВЕКМНОРСТУХавекмнорстухABEKMHOPCTYXabekmhopctyx]\s*\d{3}\s*[АВЕКМНОРСТУХавекмнорстухABEKMHOPCTYXabekmhopctyx]{2}\s*\d{2,3})|([АВЕКМНОРСТУХавекмнорстухABEKMHOPCTYXabekmhopctyx]{2}\s*\d{3}\s*\d{2,3})
=array_constrain(ArrayFormula(ЕСЛИ(ТРАНСП(sort(ТРАНСП(ArrayFormula({RANDARRAY(1;31-B3)\1+RANDARRAY(1;B3);RANDARRAY(1;31)}));2;1))>=1;"!";""));1;31)
=array_constrain(
ArrayFormula(
ЕСЛИ(
ТРАНСП(sort(
ТРАНСП(ArrayFormula(
{RANDARRAY(1;31-B3)\1+RANDARRAY(1;B3);
RANDARRAY(1;31)
}
))
;2;1))>=1
;"!";"")
)
;1;31)
=ARRAY_CONSTRAIN(sort(ТРАНСП(split(ПОВТОР(join("|||";filter(A:A;A:A<>""))&"|||";ОКРУГЛВВЕРХ(СЧЁТЗ(D:D)/СЧЁТЗ(A:A)));"|||")));СЧЁТЗ(D:D);1)
=ARRAY_CONSTRAIN(
sort(
ТРАНСП(
split(
ПОВТОР(
join(
"|||";
filter(
A:A;
A:A<>""
)
)&"|||";
ОКРУГЛВВЕРХ(СЧЁТЗ(D:D)/СЧЁТЗ(A:A))
)
;"|||"
)
)
)
;СЧЁТЗ(D:D);1
)
function test_replaceInRange(){
let rangeAddress = "A:C";
let find = "1";
let replaceWith = "22";
replaceInRange(rangeAddress, find, replaceWith);
};
/**
* Заменяет find на replaceWith в диапазоне rangeAddress
* Telegram - @ProgrammerForever
*
* @param {string} rangeAddress Адрес диапазона
* @param {string} find Что менять
* @param {string} replaceWith На что менять
* @return Не возвращает значений
*/
function replaceInRange(rangeAddress, find, replaceWith){
find = find===undefined?"":(find+"");
replaceWith = replaceWith===undefined?"":(replaceWith+"");
let as = SpreadsheetApp.getActiveSpreadsheet();
let range = as.getRange(rangeAddress);
let values = range.getValues();
let replacedValues = values.map(row=>row.map(el=>(el+"").split(find).join(replaceWith)));
range.setValues(replacedValues);
range.activate();
as.toast("Done!");
};