J'ai trouvé un moyen de le faire, en utilisant la fonctionnalité de script fournie par Google Spreadsheet.
Voici comment procéder:
- ouvrez votre feuille de calcul
- dans le menu, allez dans Tools -> Script Editor ...; cela ouvrira une nouvelle fenêtre qui vous permettra d'entrer le code
- copiez le code ci-dessous
- collez le code dans la fenêtre de l'éditeur de script et appuyez sur CTRL+ Spour l'enregistrer
- fermez les fenêtres de l'éditeur de script et revenez à la feuille de calcul
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;
}
Après avoir suivi les étapes ci-dessus, trois autres fonctions sont disponibles dans la feuille de calcul:
countCellsWithBackgroundColor(<color>, <range specification>)
sumWhereBackgroundColorIs(<color>, <range specification>)
getBackgroundColor(<cell specification>)
Veuillez noter que <range specification>
et <cell specification>
sont exprimés en notation A1 , et doivent être placés entre guillemets .
Par exemple, pour obtenir le nombre de toutes les cellules de la plage B2: F13 dont la couleur d'arrière-plan est définie sur blanc , vous devez entrer la formule suivante:
=countCellsWithBackgroundColor("white", "B2:F13")
et pour calculer la somme des mêmes cellules, utilisez la formule:
=sumWhereBackgroundColorIs("white", "B2:F13")
Certaines cellules peuvent ne pas avoir l'arrière-plan défini sur une couleur telle que «blanc», «gris», mais une couleur RVB comme #6fa8dc
. Vous ne pouvez pas deviner quelle est la couleur, donc si vous voulez connaître la couleur d'une cellule (par exemple, B9
), vous devez entrer cette formule dans une cellule:
=getBackgroundColor("B9")
et ensuite utiliser cette valeur comme paramètre pour les deux fonctions ci-dessus.
Il semble que si la couleur d'arrière-plan d'une cellule est une "couleur de thème", elle getBackground()
retourne toujours incorrectement #ffffff
. Je n'ai pas trouvé d'autre moyen de contourner cela que d'utiliser une couleur de l'ensemble standard.
Encore une fois, notez les citations dans tous les exemples ci-dessus; sans eux, les formules ne fonctionneraient pas.