Я знайшов спосіб це зробити, використовуючи функції сценаріїв, які надає 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
. Я не знайшов іншого способу, як використати колір із стандартного набору.
Знову зверніть увагу на цитати у всіх наведених вище прикладах; без них формули не працювали б.