He encontrado una manera de hacer esto, utilizando la funcionalidad de secuencias de comandos que proporciona la hoja de cálculo de Google.
Aquí se explica cómo hacerlo:
- abre tu hoja de cálculo
- en el menú, vaya a Herramientas -> Editor de secuencias de comandos ...; esto abrirá una nueva ventana que le permite ingresar el código
- copia el siguiente código
- pegue el código en la ventana del Editor de secuencias de comandos y presione CTRL+ Spara guardarlo
- cierre las ventanas del editor de Script y regrese a la hoja de cálculo
Código:
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;
}
Después de seguir los pasos anteriores, tiene tres funciones más disponibles en la hoja de cálculo:
countCellsWithBackgroundColor(<color>, <range specification>)
sumWhereBackgroundColorIs(<color>, <range specification>)
getBackgroundColor(<cell specification>)
Tenga en cuenta que <range specification>y <cell specification>se expresan en notación A1 , y deben ir entre comillas .
Por ejemplo, para obtener el recuento de todas las celdas en el rango B2: F13 que tienen el color de fondo establecido en blanco , debe ingresar la siguiente fórmula:
=countCellsWithBackgroundColor("white", "B2:F13")
y para calcular la suma de las mismas celdas, use la fórmula:
=sumWhereBackgroundColorIs("white", "B2:F13")
Es posible que algunas celdas no tengan el fondo establecido en un color como 'blanco', 'gris', sino en un color RGB similar #6fa8dc. No puede adivinar cuál es el color, por lo que si desea averiguar el color de una celda (por ejemplo B9), debe ingresar esta fórmula en una celda:
=getBackgroundColor("B9")
y luego use este valor como parámetro para las dos funciones anteriores.
Parece que si el color de fondo de una celda es un "color de tema", getBackground()siempre se devuelve incorrectamente #ffffff. No he encontrado una forma de evitar esto que no sea usar un color del conjunto estándar.
Nuevamente, tenga en cuenta las citas en todos los ejemplos anteriores; sin ellos, las fórmulas no funcionarían.