Verwenden Sie ein ONLYOFFICE-Makro, um die Summe der markierten Zellen zu berechnen

4 Juli 2024By Vlad

Bei der Arbeit mit Tabellenkalkulationen kommt es häufig vor, dass wir die Summe bestimmter Werte berechnen müssen. In diesem Beitrag wird detailliert beschrieben, wie man ein Makro erstellt, das die Summe der mit einer bestimmten Hintergrundfarbe hervorgehobenen Zellen berechnet.

Use an ONLYOFFICE macro to calculate the sum of the highlighted cells

Erstellung des Makros

  • Zugriff auf das aktive Arbeitsblatt
    In dieser Zeile wird das aktive Arbeitsblatt abgerufen, auf dem das Makro ausgeführt werden soll:

     const oWorksheet = Api.GetActiveSheet();
  • Festlegen der Referenzzelle und der Farbe
    Um dem Editor zu helfen, die Zielfarbe zu identifizieren, müssen wir zunächst eine Referenz erstellen:

       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 fill color form the exisiting range, comment this line out
       const targetedColor = range1.GetFillColor()

    Hier legen wir die Referenzzelle (B1) und ihre Hintergrundfarbe fest. Die Farbe ist auf RGB(91, 155, 213) eingestellt. Um Farben aus dem vorhandenen Bereich zu verwenden, kommentieren Sie diese Zeile aus:

    const colorReference = range1.SetFillColor(Api.CreateColorFromRGB(91, 155, 213));
  • Festlegung des Zielbereichs und der Ergebniszelle
    Hier legen wir den Zielbereich von A1 bis A16 fest. Das Ergebnis wird in Zelle A17 angezeigt:

    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
  • Initialisierung der Summenvariablen
    Wir initialisieren die Summenvariable auf 0, die die Gesamtsumme der Werte enthält:

        let sum = 0;
        let cellColorCode;
  • Iteration durch jede Zelle im Zielbereich
    Dieser Block durchläuft jede Zelle im Bereich A1, prüft, ob die Hintergrundfarbe der Zelle mit der Referenzfarbe übereinstimmt, und fügt gegebenenfalls den Wert der Zelle zur Summe hinzu:

         range2.ForEach(function (range) {
            const cellColor = range.GetFillColor();
           
            if (cellColor!== "No Fill"){
             cellColorCode = cellColor.GetRGB() 
            } else {
                cellColorCode = null;
            }
            
            if (cellColorCode && cellColorCode === targetedColor.GetRGB()) {
                const value = range.GetValue();
                if (!isNaN(parseFloat(value))) {
                    sum += parseFloat(value); 
                }
            }
        });
  • Anzeige des Ergebnisses
    Schließlich stellen wir den Wert der Zelle A17 so ein, dass die berechnete Summe angezeigt wird:

    result.SetValue(`The sum: ${sum}`)

Der gesamte Makrocode lautet wie folgt:

/*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'. To use fill color form the exisiting range, comment this line out
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 fill color form the exisiting range, comment this line out
    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.GetRGB() 
        } else {
            cellColorCode = null;
        }
        
        if (cellColorCode && cellColorCode === targetedColor.GetRGB()) {
            const value = range.GetValue();
            if (!isNaN(parseFloat(value))) {
                sum += parseFloat(value); 
            }
        }
    });
    result.SetValue(`The sum: ${sum}`)
})();

Lassen Sie uns das Makro ausführen und sehen, wie es funktioniert!

Dieses kleine, skurrile Makro ist ein leistungsfähiges Mittel zur Automatisierung von Aufgaben und zur Steigerung Ihrer Produktivität. Wir hoffen, dass es eine nützliche Ergänzung zu Ihrem Toolkit wird.

Nutzen Sie die Gelegenheit, das Potenzial der ONLYOFFICE-API auszuschöpfen. Unsere umfangreiche Sammlung von API-Methoden kann Ihre Ideen in die Tat umsetzen. Ihr Feedback ist uns sehr wichtig. Wir freuen uns über alle Fragen und innovativen Konzepte und auf eine mögliche Zusammenarbeit. Viel Erfolg!

Erstellen Sie Ihr kostenloses ONLYOFFICE-Konto

Öffnen und bearbeiten Sie gemeinsam Dokumente, Tabellen, Folien, Formulare und PDF-Dateien online.