Somma i dati in base al colore della cella in Fogli di lavoro Google


14

Ho visto questa domanda e nonostante mi trovo ad affrontare lo stesso problema, la risposta a quella domanda non è utile al mio caso.

Ho fogli di calcolo di grandi dimensioni che vengono cambiati frequentemente. Quindi, secondo la soluzione accettata per quella domanda, è difficile duplicare tutte le colonne popolate ed è scomodo modificare un'altra cella ogni volta che desidero apportare una modifica ai colori di sfondo delle celle.

Non esiste un modo per sommare i dati in base a una condizione relativa al colore di sfondo delle celle in Fogli di lavoro Google?

Risposte:


14

Si prega di vedere se la mia risposta a una domanda simile aiuta.

Aggiornare:

La mia richiesta per la galleria di script di Google Documenti è stata accettata e puoi installarla per ottenere la funzionalità che desideri.

I passi:

  • Apri il tuo foglio di calcolo
  • Nel menu vai su Strumenti -> Galleria script ...
  • Cerca Somma per colore
  • Fai clic su Installa
  • Fai clic sul pulsante Autorizza se ti fidi dello script e poi su Chiudi
  • torna al foglio di calcolo

Ora hai tre funzioni aggiuntive che puoi utilizzare nella formula del tuo foglio di calcolo:

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

Da ciò i rangeSpecificationparametri richiedono virgolette ( ") attorno a loro.

Per esempio:

=sumWhereBackgroundColorIs("white", "A1:C4")

somma i valori di tutte le celle nell'intervallo A1: C4 che hanno uno sfondo bianco.

Si noti che se non si conosce il colore di una determinata cella, è possibile utilizzare la getBackgroundColorfunzione fornita per scoprire di che colore è. Questa funzione è necessaria, poiché alcuni colori sono espressi come codici RGB (ad esempio, #00ff00anziché green).


2
Il getBackgroundColor()è deprecato. Forse puoi aggiornare il codice?
Jacob Jan Tuinstra,

2
@JacobJanTuinstra Ho aggiornato il codice, ma Google impiega un po 'di tempo a rivedere la mia richiesta. Nel frattempo, puoi usare questo codice
Cristian Lupascu,

2
@domen sì, c'è: github.com/clupascu/GoogleApps_SumByColor/blob/master/… . Non è una soluzione molto carina, ma funziona.
Cristian Lupascu,

2
La galleria di script è stata sostituita da componenti aggiuntivi. Non riesco a trovare la "somma per colore" sotto i componenti aggiuntivi. Devi inviare il tuo script ai componenti aggiuntivi affinché sia ​​disponibile lì?
Jeff Lockhart,

3
@ w0lf I nuovi fogli di calcolo di Google sembrano non supportare più la galleria di script. Reindirizza con un messaggio ai nuovi componenti aggiuntivi. L'editor di script è ancora disponibile e ho usato il tuo codice lì. Ho creato un fork e aggiunto il supporto per saltare le celle vuote (non numeriche) nella somma (altrimenti si verifica un errore se esistono celle vuote nell'intervallo): gist.github.com/jeffdgr8/1553faa6360ad04e9c17
Jeff Lockhart

2

Ecco come l'ho fatto funzionare:

  1. Apri Tools>Script Editor

  2. Incolla il codice qui sotto, salva lo script

  3. Torna al tuo foglio di calcolo. Utilizzare con =countColoredCells(A1:Z5,C5)dov'è C5la cella con il colore da contare.

Codice:

/**
* @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;
};

Crediti di codice (modificati): http://igoogledrive.blogspot.lt/2015/11/google-spreadsheet-count-of-colored.html


Ricevo un errore Range Not Found ???? : ((
Kegham K.

im gettingTypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss
Arturino,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.