Utilisez la macro ONLYOFFICE pour calculer la somme des cellules surlignées
Lorsque l’on travaille avec des feuilles de calcul, il est souvent nécessaire de calculer la somme de valeurs spécifiques. Dans cet article de blog, nous allons détailler le processus de création d’une macro qui calcule la somme des cellules mises en évidence par une couleur d’arrière-plan spécifique.
Construction de la macro
- Accédez à la feuille de calcul active
Cette ligne permet de récupérer la feuille de calcul active sur laquelle la macro sera exécutée :const oWorksheet = Api.GetActiveSheet();
- Définissez la cellule de référence et la couleur
Pour aider l’éditeur à identifier la couleur cible, nous devons d’abord créer une référence :const range1 = oWorksheet.GetRange("B1"); // Set your range for the color reference const colorReference = range1.SetFillColor(Api.CreateColorFromRGB(91, 155, 213)); // Set targeted background color const targetedColor = range1.GetFillColor();
Ici, nous définissons la cellule de référence (B1) et sa couleur d’arrière-plan. La couleur est définie sur RGB(91, 155, 213). Pour utiliser des couleurs de la gamme existante, commentez cette ligne :
const colorReference = range1.SetFillColor(Api.CreateColorFromRGB(91, 155, 213));
- Définissez la plage ciblée et la cellule de résultat
Ici, nous définissons la plage ciblée de A1 à A16. Le résultat sera affiché dans la cellule A17 :const range2 = oWorksheet.GetRange("A1:A16"); // Set the targeted range on the spreadsheet const result = oWorksheet.GetRange("A17"); // Set the cell where the result will be displayed
- Initialisez la variable somme
Nous initialisons la variable sum à 0, qui contiendra la somme totale des valeurs :let sum = 0; let cellColorCode;
- Itérez à travers chaque cellule de la plage ciblée
Ce bloc parcourt chaque cellule de la plage A1, vérifie si la couleur d’arrière-plan de la cellule correspond à la couleur de référence et, le cas échéant, ajoute la valeur de la cellule à la somme :range2.ForEach(function (range) { const cellColor = range.GetFillColor(); if (cellColor!== "No Fill"){ cellColorCode = cellColor["color"]["ey"] } else { cellColorCode = null; } if (cellColorCode && cellColorCode === targetedColor["color"]["ey"]) { const value = range.GetValue(); if (!isNaN(parseFloat(value))) { sum += parseFloat(value); } } });
- Affichez le résultat
Enfin, nous définissons la valeur de la cellule A17 pour afficher la somme calculée :result.SetValue(`The sum: ${sum}`)
Le code macro complet est le suivant :
/*About the script:
This script will calculate the sum of the values in the range A1:A16 that have the same background color as the cell B1.
The result will be displayed in the cell A17.
Order of operations:
1) Set the cell for the color reference in the variable 'range1'
2) Set the targeted fill color in the variable 'colorReference'
3) Set the targeted range in the variable 'range2'
3) Set the cell for dispalying the result in the variable 'result'
4) Before runing the macro, make sure that none of the cells in the range A1:A16 are in the active selection
*/
(function () {
const oWorksheet = Api.GetActiveSheet();
const range1 = oWorksheet.GetRange("B1"); // Set your range for the color reference
const colorReference = range1.SetFillColor(Api.CreateColorFromRGB(91, 155, 213)); /* Set targeted background color.
To use colors from the existing range, comment out this line.*/
const targetedColor = range1.GetFillColor();
const range2 = oWorksheet.GetRange("A1:A16"); // Set the targeted range on the spreadsheet
const result = oWorksheet.GetRange("A17"); // Set the cell where the result will be displayed
let sum = 0;
let cellColorCode;
range2.ForEach(function (range) {
const cellColor = range.GetFillColor();
if (cellColor!== "No Fill"){
cellColorCode = cellColor["color"]["ey"]
} else {
cellColorCode = null;
}
if (cellColorCode && cellColorCode === targetedColor["color"]["ey"]) {
const value = range.GetValue();
if (!isNaN(parseFloat(value))) {
sum += parseFloat(value);
}
}
});
result.SetValue(`The sum: ${sum}`)
})();
Exécutons notre macro et voyons comment elle fonctionne !
Cette petite macro excentrique est un moyen puissant d’automatiser des tâches et d’améliorer votre productivité. Nous espérons qu’elle deviendra un complément utile à votre boîte à outils.
Saisissez l’opportunité d’exploiter le potentiel de l’API ONLYOFFICE. Notre vaste collection de méthodes API peut concrétiser vos idées. Vos commentaires sont très appréciés. Nous sommes ouverts à toute question ou concept innovant que vous pourriez avoir et nous nous réjouissons de la possibilité d’une collaboration. Nous vous souhaitons bonne chance dans vos projets exploratoires !