Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

874
Visualizações
Google Sheets Script para contar celdas con color con varios criterios

En una tabla de Google Sheets, uso un script que me permite contar las celdas en color en una columna que muestra las fechas como valores. Cada fecha de más de 11 días está coloreada en rojo y mi guión funciona muy bien.

En otra columna indico el nombre de cada vendedor. Lo que me gustaría es poder contar el número de glóbulos rojos que le pertenecen a cada vendedor.

La columna de la fecha es la columna "G" y la columna del vendedor es la columna "F" (En mi script no importa porque indico en qué columna contar).

Mi hoja:

https://docs.google.com/spreadsheets/d/1BFd57xpFOJMOAjuRaiO6_cLCMMxQKDwi_TB6dOCDb9A/edit#gid=0

La fórmula para mi script es:

 =CompteCouleurs($G6:$G;C4)

"$G6:$G" es el rango a contar "C4" es la muestra del color a buscar

Mi guion es:

 function SommeCouleurs(plage,couleur) { var activeRange = SpreadsheetApp.getActiveRange(); var activeSheet = activeRange.getSheet(); var formule = activeRange.getFormula(); var laplage = formule.match(/\((.*)\;/).pop(); var range = activeSheet.getRange(laplage); var bg = range.getBackgrounds(); var values = range.getValues(); var lacouleur = formule.match(/\;(.*)\)/).pop(); var colorCell = activeSheet.getRange(lacouleur); var color = colorCell.getBackground(); var total = 0; for(var i=0;i<bg.length;i++) for(var j=0;j<bg[0].length;j++) if( bg[i][j] == color ) total=total+(values[i][j]*1); return total; }; function CompteCouleurs(plage,couleur) { var activeRange = SpreadsheetApp.getActiveRange(); var activeSheet = activeRange.getSheet(); var formule = activeRange.getFormula(); var laplage = formule.match(/\((.*)\;/).pop(); var range = activeSheet.getRange(laplage); var bg = range.getBackgrounds(); var values = range.getValues(); var lacouleur = formule.match(/\;(.*)\)/).pop(); var colorCell = activeSheet.getRange(lacouleur); 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; };
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Primero, expanda su área a G y F =CompteCouleurs($F6:$G;C4)

Luego, como solo tiene en cuenta la columna G, puede omitir for(var j=0;j<bg[0].length;j++)

Por lo tanto, puede verificar el color en G y el vendedor en F de la siguiente manera if( bg[i][1] == color && values[i][0] == salesman )

Si desea incluir al vendedor como parámetro, deberá cambiar la expresión regular de la siguiente manera para recuperar cada argumento (los argumentos serán una matriz)

 var args = formule.match(/\(.*\)/g)[0].match(/[A-Z0-9:]+/g)

Recomiendo también agregar un parámetro ficticio (casilla de verificación) para actualizar el cálculo

Corrección de su guión:

 function compteCouleursSi(plage, couleur, vendeur) { var activeRange = SpreadsheetApp.getActiveRange(); var activeSheet = activeRange.getSheet(); var formule = activeRange.getFormula(); // array of arguments var args = formule.match(/(?<=\().*(?=\))/g)[0].split(/[;|,]/) var laplage = args[0]; if (laplage.includes('!')) { var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(laplage.split('!')[0].replace(/'/g,'')).getRange(laplage.split('!')[1].trim()); }else{ var range = activeSheet.getRange(laplage); } var bg = range.getBackgrounds(); var values = range.getValues(); var lacouleur = args[1]; var color = activeSheet.getRange(lacouleur).getBackground(); var salesman = args[2]; var who = activeSheet.getRange(salesman).getValue() var total = 0; for (var i = 0; i < bg.length; i++) if (bg[i][1] == color && values[i][0] == who) total += 1; return total; }; function sommeCouleursSi(plage, couleur, vendeur) { var activeRange = SpreadsheetApp.getActiveRange(); var activeSheet = activeRange.getSheet(); var formule = activeRange.getFormula(); // array of arguments var args = formule.match(/(?<=\().*(?=\))/g)[0].split(/[;|,]/) var laplage = args[0]; if (laplage.includes('!')) { var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(laplage.split('!')[0].replace(/'/g,'')).getRange(laplage.split('!')[1].trim()); }else{ var range = activeSheet.getRange(laplage); } var bg = range.getBackgrounds(); var values = range.getValues(); var lacouleur = args[1]; var color = activeSheet.getRange(lacouleur).getBackground(); var salesman = args[2]; var who = activeSheet.getRange(salesman).getValue() var total = 0; for (var i = 0; i < bg.length; i++) if (bg[i][1] == color && values[i][0] == who) total += values[i][1]; return total; };

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda