Я новичок в скрипте Google Apps и хотел бы создать функцию для электронной таблицы, которая суммирует значения ячеек, когда ячейки соответствуют определенным критериям, таким как цвет фона. Более того, я хотел бы передать диапазон как массив и не использовать нотацию A1 по следующей причине.
Я нашел функцию, которая использует обозначение A1 здесь . Проблема в том, что, когда у меня есть это на данной ячейке
=sumWhereBackgroundColorIs("white", "A1:A10")
и я копирую значение в правую соседнюю ячейку, результат будет снова
= sumWhereBackgroundColorIs ("white", "A1: A10" )
в то время как я хотел бы иметь
= sumWhereBackgroundColorIs ("white", "B1: B10" )
в противном случае я всегда изменяю вручную входной аргумент, и я хочу избежать этого, поскольку мне приходится широко использовать эту функцию.
Поэтому я попытался передать диапазон в виде массива значений с помощью
=sumIfBgColor(#ffffff, A1:A10)
function sumIfBgColor(color, range){
var x = 0;
for(var i = 0; i < range.length; i++){
for(var j = 0; j < range[i].length; j++){
var cell = getCell();
if(cell.getBackgroundColor() == color)
x += parseFloat(range[i][j]);
}
}
return x;
}
но я не знаю, как получить ячейку (т.е. объект типа Range), начиная с того, что у меня есть.
источник
A1 notation
.Ответы:
К заявлению @ Jacob о невозможности я опровергаю это таким образом ... (но спасибо за улучшенную скорость)
с помощью:
с помощью следующих функций будет делать то, что вы хотите.
источник
Ссылка: http://igoogledrive.blogspot.com/2015/11/google-spreadsheet-sum-of-colored-cells.html
Вместо передачи параметров в виде строки в пользовательскую функцию, следующий скрипт принимает входные данные как диапазон:
Посмотрите на следующий скриншот:
источник
Следующий маленький скрипт поможет вам.
Код
Разъяснения
Сначала определяется активная электронная таблица. Затем выбираются значения и цвета, основанные на диапазоне. Значения будут использоваться для перебора цветов и в итоге суммирования.
Применение
пример
Я создал файл примера для вас: Сумма на основе фона
источник