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?

Weslei
fuente

Respuestas:

14

Por favor, vea si mi respuesta a una pregunta similar ayuda.

Actualizar:

Mi envío para la galería de Google Docs Script fue aceptado y puede instalarlo para obtener la funcionalidad que desea.

Los pasos:

  • Abre tu hoja de cálculo
  • En el menú, vaya a Herramientas -> Galería de secuencias de comandos ...
  • Buscar suma por color
  • Haga clic en instalar
  • Haga clic en el botón Autorizar si confía en el script y luego en Cerrar
  • volver a la hoja de cálculo

Ahora tiene tres funciones adicionales que puede usar en su fórmula de hoja de cálculo:

  • sumWhereBackgroundColorIs(color, rangeSpecification)
  • sumWhereBackgroundColorIsNot(color, rangeSpecification)
  • getBackgroundColor(rangeSpecification)

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).

Cristian Lupascu
fuente
2
El getBackgroundColor()está en desuso. ¿Quizás puedas actualizar el código?
Jacob Jan Tuinstra
2
@JacobJanTuinstra He actualizado el código, pero Google tarda un tiempo en revisar mi envío. Mientras tanto, puedes usar este código
Cristian Lupascu el
2
@domen sí, hay: github.com/clupascu/GoogleApps_SumByColor/blob/master/… . No es una solución muy bonita, pero funciona.
Cristian Lupascu
2
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:

  1. Abierto Tools>Script Editor

  2. Pegue el código a continuación, guarde el script

  3. 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;
};

Créditos de código (modificado): http://igoogledrive.blogspot.lt/2015/11/google-spreadsheet-count-of-colored.html

Kai Noack
fuente
¿Recibo un error Rango no encontrado? : ((
Kegham K.
estoy recibiendoTypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss
Arturino