Schattierte Zellen berechnen


10

Ich verwende Google Spreadsheets, um eine Matrix (Zeit / Aktivität) als Tagesplan für die Mitarbeiter zu erstellen.

Gibt es eine Formel, um die Anzahl der Zellen in einer Spalte zu berechnen, die eine bestimmte Farbe schattiert (oder nicht schattiert) haben?

Beispiel: 20 der Zellen sind grau und 31 sind nicht grau (jede andere Farbe schattiert). Anstatt sie manuell zu zählen, wird dies am unteren Rand der Spalte "Reichweite" berechnet.


Das Problem mit der @ w0lf-Lösung kommt aus dem Cache. Die Funktion ist nicht bereit, Live-Updates zu erhalten. Ich habe versucht, diese Fähigkeit durch Hinzufügen von "now ()" als zusätzlichen Parameter zu erlangen, aber es hat nicht funktioniert.
Wärme

Ich kann nicht antworten, also hinterlasse ich einfach einen Kommentar. Wenn die Zellen keinen Text enthalten, ist es einfacher, Text mit derselben Farbe wie der Hintergrund hinzuzufügen (damit er ausgeblendet ist), und dann führen Sie einfach einfach = counta () aus, um nicht leere Zellen zu zählen. Wenn natürlich, ist dies je nach Fall sehr spezifisch.
Sfratini

Antworten:


17

Ich habe einen Weg gefunden, dies mithilfe der von Google Spreadsheet bereitgestellten Skriptfunktion zu tun.

So geht's:

  • Öffnen Sie Ihre Tabelle
  • Gehen Sie im Menü zu Extras -> Skript-Editor ...; Dadurch wird ein neues Fenster geöffnet, in das Sie Code eingeben können
  • Kopieren Sie den folgenden Code
  • Fügen Sie den Code in das Skripteditorfenster ein und drücken Sie CTRL+ S, um ihn zu speichern
  • Schließen Sie die Fenster des Skripteditors und kehren Sie zur Tabelle zurück

Code:

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

Nachdem Sie die obigen Schritte ausgeführt haben, stehen Ihnen in der Tabelle drei weitere Funktionen zur Verfügung:

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

Bitte beachten Sie, dass <range specification>und <cell specification>in A1- Notation ausgedrückt sind und in Anführungszeichen gesetzt werden müssen .

Um beispielsweise die Anzahl aller Zellen im Bereich B2: F13 zu ermitteln, deren Hintergrundfarbe auf Weiß eingestellt ist , sollten Sie die folgende Formel eingeben:

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

und um die Summe derselben Zellen zu berechnen, verwenden Sie die Formel:

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

Bei einigen Zellen ist der Hintergrund möglicherweise nicht auf eine Farbe wie "Weiß" oder "Grau" eingestellt, sondern auf eine RGB-Farbe wie "Weiß" #6fa8dc. Sie können die Farbe nicht erraten. Wenn Sie also die Farbe für eine Zelle herausfinden möchten (z. B. B9), sollten Sie diese Formel in eine Zelle eingeben:

=getBackgroundColor("B9")

und verwenden Sie anschließend diesen Wert als Parameter für die beiden obigen Funktionen.

Es scheint, dass, wenn die Hintergrundfarbe einer Zelle eine "Themenfarbe" ist, getBackground()fälschlicherweise immer zurückgegeben wird #ffffff. Ich habe keinen anderen Weg gefunden, als eine Farbe aus dem Standard-Set zu verwenden.

Beachten Sie auch hier die Anführungszeichen in allen obigen Beispielen. Ohne sie würden die Formeln nicht funktionieren.


Ich habe versucht, Ihren Hinweisen zu folgen, aber im Feld verwende ich die Formel, die ich #NUM! Erhalte. Wissen Sie, warum das so ist? Ich habe versucht, etwas zu recherchieren, aber ich konnte keine genaue Antwort darauf finden. Vielen Dank, dami

@Dami kannst du deine Formel hier posten? Überprüfen Sie auch die Rechtschreibung - ich denke, die
Formelnamen

Hier nur eine Null bekommen, obwohl man den Anweisungen folgt ...

Das getBackgroundColor()ist veraltet. Vielleicht können Sie den Code aktualisieren?
Jacob Jan Tuinstra

Wenn ich die Hintergrundfarbe auf einen anderen Wert ändere, wird die Summe nicht aktualisiert. Gibt es eine Möglichkeit, die Summe automatisch zu aktualisieren, wenn ich einige Änderungen vornehme?
Michal Kováč

0

Ich habe keine Möglichkeit gefunden, die Zellen mit einer bestimmten Farbe in Google Text & Tabellen direkt zu zählen.

Was macht sie schattiert. Ist es automatisch? Wenn sie einen Wert haben, werden sie automatisch schattiert? In diesem Fall können Sie mit der Funktion counta () jede Zelle mit einem Wert zählen. Wenn es sich um komplexere Regeln handelt, müssen Sie möglicherweise die Funktion countif () verwenden.

Hinweis: Möglicherweise müssen Sie zusätzliche Zeilen am oberen oder unteren Rand der Spalte berücksichtigen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.