Soma dados com base na cor da célula nas planilhas do Google

14

Eu já vi essa pergunta e, apesar de enfrentar o mesmo problema, a resposta a essa pergunta não é útil para o meu caso.

Tenho grandes planilhas que são alteradas com frequência. Portanto, de acordo com a solução aceita para essa pergunta, é difícil duplicar todas as colunas preenchidas e é complicado editar mais uma célula toda vez que desejo fazer uma alteração nas cores de fundo das células.

Não existe uma maneira de somar dados com base em uma condição referente à cor de fundo da célula nas Planilhas do Google?

Weslei
fonte

Respostas:

14

Veja se minha resposta a uma pergunta semelhante ajuda.

Atualizar:

Meu envio para a galeria de scripts do Google Docs foi aceito e você pode instalá-lo para obter a funcionalidade desejada.

Os passos:

  • Abra sua planilha
  • No menu, vá em Ferramentas -> Galeria de scripts ...
  • Pesquisar Sum por cor
  • Clique em Instalar
  • Clique no botão Autorizar se você confiar no script e, em seguida, em Fechar
  • volte para a planilha

Agora você tem três funções adicionais que podem ser usadas na fórmula da planilha:

  • sumWhereBackgroundColorIs(color, rangeSpecification)
  • sumWhereBackgroundColorIsNot(color, rangeSpecification)
  • getBackgroundColor(rangeSpecification)

Por favor, a partir disso, os rangeSpecificationparâmetros requerem aspas ( ") ao seu redor.

Por exemplo:

=sumWhereBackgroundColorIs("white", "A1:C4")

soma os valores de todas as células no intervalo A1: C4 que possuem um plano de fundo branco.

Observe que, se você não souber a cor de uma determinada célula, poderá usar a getBackgroundColorfunção fornecida para descobrir qual é a cor. Esta função é necessária, porque algumas cores são expressas como códigos RGB (por exemplo, em #00ff00vez de green).

Cristian Lupascu
fonte
2
O getBackgroundColor()está obsoleto. Talvez você possa atualizar o código?
Jacob Jan Tuinstra
2
@JacobJanTuinstra Atualizei o código, mas leva um tempo para o Google revisar meu envio. Enquanto isso, você pode usar este código
Cristian Lupascu
2
@domen sim, existe: github.com/clupascu/GoogleApps_SumByColor/blob/master/… . Não é uma solução muito bonita, mas funciona.
Cristian Lupascu
2
A galeria de scripts foi substituída por complementos. Não consigo encontrar "soma por cor" nos complementos. Você precisa enviar seu script para complementos para que ele esteja disponível lá?
Jeff Lockhart
3
@ w0lf As novas planilhas do Google parecem não suportar mais a galeria de scripts. Ele redireciona com uma mensagem para os novos complementos. O editor de scripts ainda está disponível e eu usei seu código lá. Fiz um garfo e suporte adicional para pular células vazias (não numérico) no montante (de outro modo ocorrerá um erro se existem células vazias na gama): gist.github.com/jeffdgr8/1553faa6360ad04e9c17
Jeff Lockhart
2

É assim que eu consegui funcionar:

  1. Abrir Tools>Script Editor

  2. Cole o código abaixo, salve o script

  3. Volte para sua planilha. Use com =countColoredCells(A1:Z5,C5)onde C5está a célula com a cor a ser contada.

Código:

/**
* @param {range} countRange Range to be evaluated
* @param {range} colorRef Cell with background color to be searched for in countRange
* @return {number}
* @customfunction
*/

function countColoredCells(countRange,colorRef) {
  var activeRange = SpreadsheetApp.getActiveRange();
  var activeSheet = activeRange.getSheet();
  var formula = activeRange.getFormula();

  var rangeA1Notation = formula.match(/\((.*)\,/).pop().trim();
  var range = activeSheet.getRange(rangeA1Notation);
  var bg = range.getBackgrounds();
  var values = range.getValues();

  var colorCellA1Notation = formula.match(/\,(.*)\)/).pop().trim();
  var colorCell = activeSheet.getRange(colorCellA1Notation);
  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;
};

Créditos de código (alterados): http://igoogledrive.blogspot.lt/2015/11/google-spreadsheet-count-of-colored.html

Kai Noack
fonte
Estou recebendo um erro Intervalo não encontrado ???? : ((
Kegham K.
im recebendoTypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss
Arturino