Я нашел способ сделать это, используя функции сценариев, которые предоставляет Google Spreadsheet.
Вот как это сделать:
- откройте свою таблицу
- в меню зайдите в Сервис -> Редактор скриптов ...; это откроет новое окно, которое позволяет вам ввести код
- скопируйте код ниже
- вставьте код в окно редактора скриптов и нажмите CTRL+, Sчтобы сохранить его
- закройте окна редактора скриптов и вернитесь к электронной таблице
Код:
function getBackgroundColor(rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange(rangeSpecification);
return cell.getBackground();
}
function sumWhereBackgroundColorIs(color, rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange(rangeSpecification);
var x = 0;
for (var i = 1; i <= range.getNumRows(); i++) {
for (var j = 1; j <= range.getNumColumns(); j++) {
var cell = range.getCell(i, j);
if(cell.getBackground() == color)
x += parseFloat(cell.getValue());
}
}
return x;
}
function countCellsWithBackgroundColor(color, rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange(rangeSpecification);
var x = 0;
for (var i = 1; i <= range.getNumRows(); i++) {
for (var j = 1; j <= range.getNumColumns(); j++) {
var cell = range.getCell(i, j);
if(cell.getBackground() == color)
x++;
}
}
return x;
}
После выполнения вышеуказанных шагов у вас есть еще три функции в электронной таблице:
countCellsWithBackgroundColor(<color>, <range specification>)
sumWhereBackgroundColorIs(<color>, <range specification>)
getBackgroundColor(<cell specification>)
Обратите внимание, что <range specification>
и <cell specification>
выражены в обозначении A1 , и должны быть заключены в кавычки .
Например, чтобы получить количество всех ячеек в диапазоне B2: F13, для которых цвет фона установлен на белый , необходимо ввести следующую формулу:
=countCellsWithBackgroundColor("white", "B2:F13")
и для вычисления суммы одинаковых ячеек используйте формулу:
=sumWhereBackgroundColorIs("white", "B2:F13")
Для некоторых ячеек цвет фона может быть не таким, как «белый», «серый», а цвет RGB #6fa8dc
. Вы не можете угадать, какой цвет, поэтому, если вы хотите узнать цвет для ячейки (например, B9
), вы должны ввести эту формулу в ячейку:
=getBackgroundColor("B9")
и затем использовать это значение в качестве параметра для двух функций выше.
Похоже, что если цвет фона ячейки - «цвет темы», он getBackground()
всегда возвращается неверно #ffffff
. Я не нашел другого выхода, кроме как использовать цвет из стандартного набора.
Опять же, обратите внимание на цитаты во всех приведенных выше примерах; без них формулы не сработали бы.