Summieren Sie die Daten basierend auf der Zellenfarbe in Google Spreadsheets

14

Ich habe diese Frage gesehen und obwohl ich vor dem gleichen Problem stehe, ist die Antwort auf diese Frage für meinen Fall nicht hilfreich.

Ich habe große Tabellenkalkulationen, die häufig geändert werden. Entsprechend der Lösung, die für diese Frage angenommen wurde, ist es schwierig, alle ausgefüllten Spalten zu duplizieren, und es ist mühsam, jedes Mal eine weitere Zelle zu bearbeiten, wenn ich die Hintergrundfarben der Zellen ändern möchte.

Gibt es keine Möglichkeit, Daten basierend auf einer Bedingung bezüglich der Zellenhintergrundfarbe in Google Spreadsheets zu summieren?

Weslei
quelle

Antworten:

14

Bitte sehen Sie, ob meine Antwort auf eine ähnliche Frage hilft.

Aktualisieren:

Meine Einreichung für die Google Text & Tabellen-Skriptgalerie wurde akzeptiert und Sie können sie installieren, um die gewünschten Funktionen zu erhalten.

Die Schritte:

  • Öffnen Sie Ihre Tabelle
  • Gehen Sie im Menü zu Extras -> Skriptgalerie ...
  • Suche nach Summe nach Farbe
  • Klicken Sie auf Installieren
  • Klicken Sie auf die Schaltfläche Autorisieren , wenn Sie dem Skript vertrauen, und klicken Sie dann auf Schließen
  • Gehen Sie zurück zur Tabelle

Jetzt haben Sie drei zusätzliche Funktionen, die Sie in Ihrer Tabellenkalkulationsformel verwenden können:

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

Bitte rangeSpecificationsetzen Sie die Parameter daher in Anführungszeichen ( ").

Beispielsweise:

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

summiert die Werte aller Zellen im Bereich A1: C4, die einen weißen Hintergrund haben.

Bitte beachten Sie, dass Sie, wenn Sie die Farbe einer bestimmten Zelle nicht kennen, die bereitgestellte getBackgroundColorFunktion verwenden können, um die Farbe herauszufinden. Diese Funktion ist erforderlich, da einige Farben als RGB-Codes ausgedrückt werden (z. B. #00ff00anstelle von green).

Cristian Lupascu
quelle
2
Der getBackgroundColor()ist veraltet. Vielleicht können Sie den Code aktualisieren?
Jacob Jan Tuinstra
2
@JacobJanTuinstra Ich habe den Code aktualisiert, aber es dauert eine Weile, bis Google meinen Beitrag überprüft. In der Zwischenzeit können Sie diesen Code verwenden
Cristian Lupascu
2
@domen ja, da ist: github.com/clupascu/GoogleApps_SumByColor/blob/master/… . Keine sehr schöne Lösung, aber es funktioniert.
Cristian Lupascu
2
Die Skriptgalerie wurde durch Add-Ons ersetzt. Ich kann "Summe nach Farbe" unter Add-Ons nicht finden. Müssen Sie Ihr Skript bei Add-Ons einreichen, damit es dort verfügbar ist?
Jeff Lockhart
3
@ w0lf Die neuen Google-Tabellenkalkulationen scheinen die Skriptgalerie nicht mehr zu unterstützen. Es leitet mit einer Nachricht an die neuen Add-Ons weiter. Der Skripteditor ist noch verfügbar und ich habe dort Ihren Code verwendet. Ich habe einen Fork erstellt und Unterstützung für das Überspringen leerer (nicht numerischer) Zellen in der Summe hinzugefügt (andernfalls tritt ein Fehler auf, wenn leere Zellen im Bereich vorhanden sind): gist.github.com/jeffdgr8/1553faa6360ad04e9c17
Jeff Lockhart
2

So habe ich es zum Laufen gebracht:

  1. Öffnen Sie Tools>Script Editor

  2. Füge den Code unten ein und speichere das Skript

  3. Kehren Sie zu Ihrer Tabelle zurück. Verwenden Sie mit =countColoredCells(A1:Z5,C5)wo C5ist die Zelle mit der Farbe zu zählen.

Code:

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

Code-Credits (geändert): http://igoogledrive.blogspot.lt/2015/11/google-spreadsheet-count-of-colored.html

Kai Noack
quelle
Ich erhalte eine Fehlermeldung Bereich nicht gefunden ???? : ((
Kegham K.
im bekommenTypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss
Arturino