Facebook
From Social Pig, 5 Years ago, written in JavaScript.
Embed
Download Paste or View Raw
Hits: 221
  1. /**
  2. * @param {range} sumRange Range to be evaluated
  3. * @param {range} colorRef Cell with background color to be searched for in sumRange
  4. * @return {number}
  5. * @customfunction
  6. */
  7.  
  8. function sumColoredCells(sumRange,colorRef) {
  9.   var activeRange = SpreadsheetApp.getActiveRange();
  10.   var activeSheet = activeRange.getSheet();
  11.   var formula = activeRange.getFormula().toString();
  12.   formula = formula.replace(new RegExp(';','g'),',');
  13.  
  14.   var rangeA1Notation = formula.match(/\((.*)\,/).pop().replace(/\s/g, "");
  15.   var range = activeSheet.getRange(rangeA1Notation);
  16.   var bg = range.getBackgrounds();
  17.   var values = range.getValues();
  18.  
  19.   var colorCellA1Notation = formula.match(/\,(.*)\)/).pop().replace(/\s/g, "");
  20.   var colorCell = activeSheet.getRange(colorCellA1Notation);
  21.   var color = colorCell.getBackground();
  22.  
  23.   var total = 0;
  24.  
  25.   for(var i=0;i<bg.length;i++)
  26.     for(var j=0;j<bg[0].length;j++)
  27.       if( bg[i][j] == color )
  28.         total=total+(values[i][j]*1);
  29.   return total;
  30. };