Sumar datos basados en el color de la celda en las hojas de cálculo de Google
14
He visto esta pregunta y aunque tengo el mismo problema, la respuesta a esa pregunta no es útil para mi caso.
Tengo grandes hojas de cálculo que se cambian con frecuencia. Entonces, de acuerdo con la solución aceptada para esa pregunta, es difícil duplicar todas las columnas pobladas y es engorroso editar una celda más cada vez que deseo hacer un cambio en los colores de fondo de las celdas.
¿No hay una manera de sumar datos en función de una condición con respecto al color de fondo de la celda en las hojas de cálculo de Google?
Por favor, a partir de eso, los rangeSpecificationparámetros requieren comillas ( ") a su alrededor.
Por ejemplo:
=sumWhereBackgroundColorIs("white", "A1:C4")
suma los valores de todas las celdas en el rango A1: C4 que tienen un fondo blanco.
Tenga en cuenta que si no conoce el color de una celda determinada, puede utilizar la getBackgroundColorfunción proporcionada para averiguar cuál es el color. Esta función es necesaria, porque algunos colores se expresan como códigos RGB (por ejemplo, en #00ff00lugar de green).
La galería de guiones ha sido reemplazada por complementos. No puedo encontrar "suma por color" en complementos. ¿Tienes que enviar tu script a los complementos para que esté disponible allí?
Jeff Lockhart
3
@ w0lf Las nuevas hojas de cálculo de Google ya no admiten la galería de scripts. Redirige con un mensaje a los nuevos complementos. El editor de script todavía está disponible y utilicé su código allí. Hice una bifurcación y agregué soporte para omitir celdas vacías (no numéricas) en la suma (de lo contrario, se produce un error si existen celdas vacías en el rango): gist.github.com/jeffdgr8/1553faa6360ad04e9c17
Jeff Lockhart
2
Así es como lo hice funcionar:
Abierto Tools>Script Editor
Pegue el código a continuación, guarde el script
Regrese a su hoja de cálculo. Use con =countColoredCells(A1:Z5,C5)donde C5está la celda con el color a contar.
Código:
/**
* @param {range} countRange Range to be evaluated
* @param {range} colorRef Cell with background color to be searched for in countRange
* @return {number}
* @customfunction
*/
function countColoredCells(countRange,colorRef) {
var activeRange = SpreadsheetApp.getActiveRange();
var activeSheet = activeRange.getSheet();
var formula = activeRange.getFormula();
var rangeA1Notation = formula.match(/\((.*)\,/).pop().trim();
var range = activeSheet.getRange(rangeA1Notation);
var bg = range.getBackgrounds();
var values = range.getValues();
var colorCellA1Notation = formula.match(/\,(.*)\)/).pop().trim();
var colorCell = activeSheet.getRange(colorCellA1Notation);
var color = colorCell.getBackground();
var count = 0;
for(var i=0;i<bg.length;i++)
for(var j=0;j<bg[0].length;j++)
if( bg[i][j] == color )
count=count+1;
return count;
};
getBackgroundColor()
está en desuso. ¿Quizás puedas actualizar el código?Así es como lo hice funcionar:
Abierto
Tools
>Script Editor
Pegue el código a continuación, guarde el script
Regrese a su hoja de cálculo. Use con
=countColoredCells(A1:Z5,C5)
dondeC5
está la celda con el color a contar.Código:
Créditos de código (modificado): http://igoogledrive.blogspot.lt/2015/11/google-spreadsheet-count-of-colored.html
fuente
TypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss