Cálculo de células sombreadas


10

Estou usando o Google Spreadsheets para criar uma matriz (horário / atividade) como uma programação diária para a equipe fazer login.

Existe uma fórmula para calcular o número de células em uma coluna sombreadas (ou não sombreadas) de uma determinada cor?

Por exemplo: 20 das células são cinza e 31 não são cinza (sombreadas com qualquer outra cor) e, em vez de contá-las manualmente, calcula isso na parte inferior da coluna de alcance.


O problema com a solução do @ w0lf vem do cache. A função não está pronta para receber atualizações ao vivo. Tentei obter essa capacidade adicionando "now ()" como um parâmetro extra, mas não funcionou.
— calor

Eu não posso responder, então vou deixar um comentário. Se as células não tiverem texto, é mais fácil adicionar texto com a mesma cor do plano de fundo (para que fique oculto) e basta fazer um simples = counta () para contar as células não vazias. Se claro, isso é muito específico, dependendo do caso.
— sfratini 20/02

Respostas:


17

Eu encontrei uma maneira de fazer isso, usando a funcionalidade de script fornecida pelo Google Spreadsheet.

Veja como fazê-lo:

  • abra sua planilha
  • no menu, vá em Ferramentas -> Editor de scripts ...; isso abrirá uma nova janela que permite inserir código
  • copie o código abaixo
  • cole o código na janela Script Editor e pressione CTRL+ Spara salvá-lo
  • feche as janelas do editor de scripts e volte para a planilha

Código:

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;
}

Após seguir as etapas acima, você tem mais três funções disponíveis na planilha:

  • countCellsWithBackgroundColor(<color>, <range specification>)
  • sumWhereBackgroundColorIs(<color>, <range specification>)
  • getBackgroundColor(<cell specification>)

Observe que <range specification>e <cell specification>são expressos na notação A1 e devem estar entre aspas .

Por exemplo, para obter a contagem de todas as células no intervalo B2: F13 que têm a cor de fundo definida como branca , insira a seguinte fórmula:

=countCellsWithBackgroundColor("white", "B2:F13")

e para calcular a soma das mesmas células, use a fórmula:

=sumWhereBackgroundColorIs("white", "B2:F13")

Algumas células podem não ter o plano de fundo definido com uma cor como 'branco', 'cinza', mas com uma cor RGB #6fa8dc. Você não pode adivinhar qual é a cor; portanto, se quiser descobrir a cor de uma célula (por exemplo B9), insira esta fórmula em uma célula:

=getBackgroundColor("B9")

e depois use esse valor como parâmetro para as duas funções acima.

Parece que se a cor de plano de fundo de uma célula for uma "cor do tema", getBackground()sempre retornará incorretamente #ffffff. Eu não encontrei uma maneira de contornar isso além de usar uma cor do conjunto padrão.

Novamente, observe as aspas em todos os exemplos acima; sem eles, as fórmulas não funcionariam.


Eu tenho tentado seguir suas dicas, mas no campo eu uso a fórmula que eu recebo #NUM !, você sabe por que isso? Tentei fazer alguma pesquisa, mas não consegui encontrar a resposta exata para isso. Obrigado, um milhão, dami

@Dami, você pode postar sua fórmula aqui? Além disso, verifique a ortografia - Eu acho que os nomes de fórmulas são sensíveis
— Cristian Lupascu

Ficando apenas um zero aqui, apesar de seguir as instruções ...

O getBackgroundColor()está obsoleto. Talvez você possa atualizar o código?
— Jacob Jan Tuinstra

Quando altero a cor do plano de fundo para outro valor, a soma não é atualizada. Existe uma maneira de atualizar automaticamente a soma quando eu fizer algumas alterações?
— Michal Kováč

0

Não encontrei uma maneira de contar diretamente as células com uma cor específica no Google Docs.

O que os torna sombreados. É automático? Se eles tiverem um valor, eles serão sombreados automaticamente? Se for esse o caso, você pode usar a função counta () para contar qualquer célula com um valor. Se houver um conjunto mais complexo de regras envolvidas, você poderá precisar usar a função countif ().

Nota: pode ser necessário levar em consideração qualquer linha extra na parte superior ou inferior da coluna

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.