Use uma macro do ONLYOFFICE para calcular a soma das células destacadas
Ao trabalhar com planilhas, muitas vezes há ocasiões em que precisamos calcular a soma de valores específicos. Nesta postagem do blog detalharemos o processo de criação de uma macro que calcula a soma das células destacadas com uma cor de fundo específica.
Construindo a macro
- Acesse a planilha ativa
Esta linha busca a planilha ativa onde a macro será executada:
const oWorksheet = Api.GetActiveSheet();
- Defina a célula de referência e a cor
Para ajudar o editor a identificar a cor alvo, primeiro precisamos criar uma referência:
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()
Aqui definimos a célula de referência (B1) e sua cor de fundo. A cor está definida como RGB(91, 155, 213). Para usar cores do intervalo existente, comente esta linha:
const colorReference = range1.SetFillColor(Api.CreateColorFromRGB(91, 155, 213));
- Defina o intervalo de destino e a célula de resultado
Aqui definimos o intervalo alvo de A1 a A16. O resultado será exibido na célula 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
- Inicialize a variável de soma
Inicializamos a variável sum como 0, que conterá a soma total dos valores:
let sum = 0;
let cellColorCode;
- Iterar em cada célula no intervalo de destino
Este bloco percorre cada célula do intervalo A1, verifica se a cor de fundo da célula corresponde à cor de referência e, em caso afirmativo, adiciona o valor da célula à soma:
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);
}
}
});
- Exibir o resultado
Por fim, definimos o valor da célula A17 para exibir a soma calculada:
result.SetValue(`The sum: ${sum}`)
Todo o código da macro é o seguinte:
/*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}`)
})();
Vamos executar nossa macro e ver como funciona!
Esta pequena macro peculiar é uma forma poderosa de automatizar tarefas e aumentar sua produtividade. Esperamos que se torne uma adição útil ao seu kit de ferramentas.
Aproveite a oportunidade para aproveitar o potencial da API ONLYOFFICE. Nossa vasta coleção de métodos de API pode dar vida às suas ideias. Seu feedback é altamente valorizado. Congratulamo-nos com qualquer perguntas ou conceitos inovadores você pode ter e estamos ansiosos pela possibilidade de colaboração. Boa sorte em seus empreendimentos exploratórios!