Additionner les données en fonction de la couleur des cellules dans les feuilles de calcul Google

14

J'ai vu cette question et bien que je sois confronté au même problème, la réponse à cette question n'est pas utile à mon cas.

J'ai de grandes feuilles de calcul qui changent fréquemment. Ainsi, selon la solution acceptée à cette question, il est difficile de dupliquer toutes les colonnes remplies et il est difficile de modifier une cellule de plus chaque fois que je souhaite modifier les couleurs d'arrière-plan des cellules.

N'existe-t-il pas un moyen de faire la somme des données en fonction d'une condition concernant la couleur d'arrière-plan des cellules dans les feuilles de calcul Google?

Weslei
la source

Réponses:

14

Veuillez voir si ma réponse à une question similaire aide.

Mise à jour:

Ma soumission pour la galerie de scripts Google Docs a été acceptée et vous pouvez l'installer pour obtenir les fonctionnalités que vous souhaitez.

Les marches:

  • Ouvrez votre feuille de calcul
  • Dans le menu, allez dans Outils -> Galerie de scripts ...
  • Recherche de somme par couleur
  • Cliquez sur Installer
  • Cliquez sur le bouton Autoriser si vous faites confiance au script, puis sur Fermer
  • revenir à la feuille de calcul

Vous disposez maintenant de trois fonctions supplémentaires que vous pouvez utiliser dans votre formule de feuille de calcul:

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

Merci de cela les rangeSpecificationparamètres nécessitent des guillemets ( ") autour d'eux.

Par exemple:

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

additionne les valeurs de toutes les cellules de la plage A1: C4 qui ont un fond blanc.

Veuillez noter que si vous ne connaissez pas la couleur d'une certaine cellule, vous pouvez utiliser la getBackgroundColorfonction fournie pour savoir quelle est la couleur. Cette fonction est nécessaire, car certaines couleurs sont exprimées sous forme de codes RVB (par exemple, #00ff00au lieu de green).

Cristian Lupascu
la source
2
Le getBackgroundColor()est obsolète. Vous pouvez peut-être mettre à jour le code?
Jacob Jan Tuinstra
2
@JacobJanTuinstra J'ai mis à jour le code, mais il faut un certain temps à Google pour examiner ma soumission. En attendant, vous pouvez utiliser ce code
Cristian Lupascu
2
@domen oui, il y a: github.com/clupascu/GoogleApps_SumByColor/blob/master/… . Pas une très jolie solution, mais ça marche.
Cristian Lupascu
2
La galerie de scripts a été remplacée par des modules complémentaires. Je ne trouve pas "somme par couleur" sous les modules complémentaires. Devez-vous soumettre votre script à des modules complémentaires pour qu'il y soit disponible?
Jeff Lockhart
3
@ w0lf Les nouvelles feuilles de calcul Google ne semblent plus prendre en charge la galerie de scripts. Il redirige avec un message vers les nouveaux modules complémentaires. L'éditeur de script est toujours disponible et j'y ai utilisé votre code. J'ai créé une fourchette et ajouté la prise en charge du saut des cellules vides (non numériques) dans la somme (sinon une erreur se produit si des cellules vides existent dans la plage): gist.github.com/jeffdgr8/1553faa6360ad04e9c17
Jeff Lockhart
2

Voici comment je l'ai fait fonctionner:

  1. Ouvrir Tools>Script Editor

  2. Collez le code ci-dessous, enregistrez le script

  3. Revenez à votre feuille de calcul. Utilisez avec =countColoredCells(A1:Z5,C5)où se C5trouve la cellule avec la couleur à compter.

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

Crédits de code (modifiés): http://igoogledrive.blogspot.lt/2015/11/google-spreadsheet-count-of-colored.html

Kai Noack
la source
Je reçois une erreur Range Not Found ???? : ((
Kegham K.
im gettingTypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss
Arturino