Calcolo di celle ombreggiate


10

Sto usando Google Spreadsheets per creare una matrice (tempo / attività) come programma giornaliero per consentire al personale di accedere.

Esiste una formula per calcolare il numero di celle in una colonna ombreggiate (o non ombreggiate) di un determinato colore?

Ad esempio: 20 celle sono grigie e 31 non sono grigie (ombreggiate in qualsiasi altro colore) e invece di contarle manualmente, calcola questo nella parte inferiore della colonna di copertura.


Il problema con la soluzione di @ w0lf proviene dalla cache. La funzione non è pronta per ottenere aggiornamenti in tempo reale. Ho provato a ottenere questa capacità aggiungendo "now ()" come parametro aggiuntivo ma non ha funzionato.
Calore

Non posso rispondere, quindi lascerò solo un commento. Se le celle non hanno testo, è più facile aggiungere qualsiasi testo all'interno con lo stesso colore dello sfondo (quindi è nascosto) e quindi fai semplicemente un semplice = counta () per contare le celle non vuote. Se ovviamente questo è molto specifico a seconda del caso.
sfratini il

Risposte:


17

Ho trovato un modo per farlo, utilizzando la funzionalità di scripting fornita da Google Spreadsheet.

Ecco come farlo:

  • apri il tuo foglio di calcolo
  • nel menu, vai su Strumenti -> Script Editor ...; questo aprirà una nuova finestra che ti permetterà di inserire il codice
  • copia il codice qui sotto
  • incolla il codice nella finestra Editor di script e premi CTRL+ Sper salvarlo
  • chiudere le finestre dell'editor degli script e tornare al foglio di calcolo

Codice:

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

Dopo aver seguito i passaggi precedenti, nel foglio di calcolo sono disponibili altre tre funzioni:

  • countCellsWithBackgroundColor(<color>, <range specification>)
  • sumWhereBackgroundColorIs(<color>, <range specification>)
  • getBackgroundColor(<cell specification>)

Si prega di notare che <range specification>e <cell specification>sono espressi in A1 notazione, e deve essere racchiuso tra virgolette .

Ad esempio, per ottenere il conteggio di tutte le celle nell'intervallo B2: F13 con il colore di sfondo impostato su bianco , è necessario immettere la seguente formula:

=countCellsWithBackgroundColor("white", "B2:F13")

e per calcolare la somma delle stesse celle, usa la formula:

=sumWhereBackgroundColorIs("white", "B2:F13")

Alcune celle potrebbero non avere lo sfondo impostato su un colore come 'bianco', 'grigio', ma un colore RGB simile #6fa8dc. Non puoi indovinare quale sia il colore, quindi se vuoi scoprire il colore di una cella (ad esempio, B9), dovresti inserire questa formula in una cella:

=getBackgroundColor("B9")

e successivamente utilizzare questo valore come parametro per le due funzioni sopra.

Sembra che se il colore di sfondo di una cella è un "colore tema", getBackground()restituisce sempre erroneamente #ffffff. Non ho trovato un modo per aggirare questo se non quello di usare un colore dal set standard.

Ancora una volta, notare le virgolette in tutti gli esempi sopra; senza di essi le formule non funzionerebbero.


Ho cercato di seguire i tuoi suggerimenti, ma nel campo utilizzo la formula che ricevo #NUM !, sai perché? Ho provato a fare qualche ricerca, ma non sono riuscito a trovare la risposta esatta per questo. Grazie mille, dami

@Dami puoi pubblicare la tua formula qui? Inoltre, controlla l'ortografia - penso che i nomi delle formule
facciano

Ottenere solo uno zero qui, nonostante

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

Quando cambio il colore di sfondo su un altro valore, la somma non viene aggiornata. C'è un modo per aggiornare automaticamente la somma quando faccio alcune modifiche?
Michal Kováč,

0

Non ho trovato un modo per contare direttamente le celle con un colore specifico in Google Documenti.

Ciò che li rende ombreggiati. È automatico? Se hanno un valore vengono automaticamente ombreggiati? In tal caso, puoi utilizzare la funzione counta () per contare qualsiasi cella con un valore. Se esiste un insieme di regole più complesso, potrebbe essere necessario utilizzare la funzione countif ().

Nota: potrebbe essere necessario tenere conto di eventuali righe aggiuntive nella parte superiore o inferiore della colonna

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.