web-dev-qa-db-fra.com

Comptez les cellules de même couleur dans la feuille de calcul Google

J'essaie de compter le nombre de cellules avec la même couleur d'arrière-plan et de mettre le résultat dans une autre cellule avec un script dans le script Google Apps, mais je ne peux pas le faire. J'ai le prochain script mais je ne travaille pas et je ne sais pas quel est le problème:

function countbackgrounds() {
 var book = SpreadsheetApp.getActiveSpreadsheet();
 var range_input = book.getRange("B3:B4");
 var range_output = book.getRange("B6");
 var cell_colors = range_input.getBackgroundColors()[0];
 var color = "#58FA58";
 var count = 0;

 for( var i in cell_colors )
  if( cell_colors[i] == color ){
    range_output.setValue(++count);
  }
  else {
    return count; 
  }
 }  
13
user1974764

Solution facile si vous ne voulez pas coder manuellement à l'aide de Google Sheets Power Tools :

  1. Installez Power Tools via le panneau Modules complémentaires (Modules complémentaires -> Obtenir des modules complémentaires)
  2. Dans la barre latérale Power Tools, cliquez sur le bouton Σ et dans ce menu, cliquez sur l'élément de menu "Sum by Color"
  3. Sélectionnez la "cellule de motif" avec le balisage de couleur que vous souhaitez rechercher
  4. Sélectionnez la "plage source" pour les cellules que vous souhaitez compter
  5. La fonction d'utilisation doit être définie sur "COUNTA"
  6. Appuyez sur "Insérer une fonction" et vous avez terminé :)
23
Wolph
function countbackgrounds() {
 var book = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = book.getActiveSheet();
 var range_input = sheet.getRange("B3:B4");
 var range_output = sheet.getRange("B6");
 var cell_colors = range_input.getBackgroundColors();
 var color = "#58FA58";
 var count = 0;

 for(var r = 0; r < cell_colors.length; r++) {
   for(var c = 0; c < cell_colors[0].length; c++) {
     if(cell_colors[r][c] == color) {
       count = count + 1;
     }
   }
 }
    range_output.setValue(count);
 }
8
ScampMichael

voici une version de travail:

function countbackgrounds() {
 var book = SpreadsheetApp.getActiveSpreadsheet();
 var range_input = book.getRange("B3:B4");
 var range_output = book.getRange("B6");
 var cell_colors = range_input.getBackgroundColors();
 var color = "#58FA58";
 var count = 0;

 for( var i in cell_colors ){
 Logger.log(cell_colors[i][0])
  if( cell_colors[i][0] == color ){ ++count }
  }
range_output.setValue(count);
 }  
1
Serge insas