Soy nuevo en el script de Google Apps y me gustaría crear una función para una hoja de cálculo que sume los valores de las celdas cuando las celdas cumplen ciertos criterios, como el color de fondo. Además, me gustaría pasar el rango como una matriz y no usar la notación A1 por la siguiente razón.
Encontré una función que usa la notación A1 aquí . El problema es que cuando lo tengo en una celda determinada
=sumWhereBackgroundColorIs("white", "A1:A10")
y copio el valor en la celda adyacente derecha, el resultado será nuevamente
= sumWhereBackgroundColorIs ("blanco", "A1: A10" )
mientras me gustaría tener
= sumWhereBackgroundColorIs ("blanco", "B1: B10" )
de lo contrario, siempre tengo que modificar manualmente el argumento de entrada y quiero evitarlo, ya que tengo que usar esta función ampliamente.
Por lo tanto, he intentado pasar un rango como una matriz de valores usando
=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;
}
pero no sé cómo obtener la celda (es decir, el objeto de tipo Range) a partir de lo que tengo.
fuente
A1 notation
.Respuestas:
Para el reclamo de imposibilidad de @ Jacob, lo refute así ... (pero gracias por la velocidad mejorada)
utilizando:
con las siguientes funciones harás lo que quieras.
fuente
Referencia: http://igoogledrive.blogspot.com/2015/11/google-spreadsheet-sum-of-colored-cells.html
En lugar de pasar parámetros como una cadena a la función personalizada, el siguiente script toma la entrada como un rango:
Echa un vistazo a la siguiente captura de pantalla:
fuente
El siguiente pequeño script hará el truco.
Código
Explicado
Primero, se determina la hoja de cálculo activa. Luego, se obtienen tanto los valores como los colores, según el rango. Los valores se utilizarán para recorrer los colores y, en última instancia, la suma.
Uso
Ejemplo
He creado un archivo de ejemplo para usted: Suma basada en el fondo
fuente