根据Google Spreadsheets中的单元格颜色对数据求和


14

我已经看到了这个问题,而且完全遇到了同样的问题,这个问题的答案对我的情况没有帮助。

我有经常更改的大型电子表格。因此,根据已接受该问题的解决方案,很难复制所有填充的列,并且每次我希望对单元格背景颜色进行更改时,都要多编辑一个单元格。

是否存在基于Google Spreadsheets中有关单元格背景颜色的条件对数据求和的方法?

Answers:


14

请查看我对类似问题的回答是否有帮助。

更新:

我提交给Google Docs脚本库的提交已被接受,您可以安装它以获得所需的功能。

步骤:

  • 打开电子表格
  • 在菜单中,转到工具 -> 脚本库...
  • 按颜色搜索总和
  • 点击安装
  • 如果您信任脚本,请单击“ 授权”按钮,然后单击“ 关闭”。
  • 返回电子表格

现在,您可以在电子表格公式中使用三个附加功能:

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

请注意,rangeSpecification参数必须"在其两边加上引号()。

例如:

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

对具有白色背景的A1:C4范围内的所有单元格的值求和。

请注意,如果您不知道某个单元格的颜色,则可以使用提供的getBackgroundColor功能来找出颜色。此功能是必需的,因为某些颜色表示为RGB代码(例如,#00ff00代替green)。


2
在getBackgroundColor()已被弃用。也许您可以更新代码?
— Jacob Jan Tuinstra 2013年

2
@JacobJanTuinstra我已经更新了代码,但是Google需要一段时间来审核我的提交。在此期间,您可以使用此代码
— 克里斯蒂安Lupascu

2
@domen是的,有:github.com/clupascu/GoogleApps_SumByColor/blob/master/…。这不是一个非常漂亮的解决方案,但是可以。
— Cristian Lupascu

2
脚本库已被附加组件取代。我在附加组件下找不到“按颜色求和”。您是否需要将脚本提交给加载项才能在此处使用?
— 杰夫·洛克哈特2014年

3
@ w0lf新的Google电子表格似乎不再支持脚本库。它通过消息重定向到新的附件。脚本编辑器仍然可用,我在那里使用了您的代码。我做了一个分叉,并添加了跳过总和中的空(非数字)单元格的支持(否则,如果范围中存在空单元格,则会发生错误):gist.github.com/jeffdgr8/1553faa6360ad04e9c17
— Jeff Lockhart,

2

这就是我的工作方式:

  1. 开启Tools>Script Editor

  2. 粘贴下面的代码,保存脚本

  3. 返回您的电子表格。与=countColoredCells(A1:Z5,C5)其中C5要计数颜色的单元格一起使用。

码:

/**
* @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;
};

代码积分(已更改):http : //igoogledrive.blogspot.lt/2015/11/google-spreadsheet-count-of-colored.html


我收到一个错误找不到范围????:((
— Kegham K.

即时消息TypeError: Cannot call method "pop" of null. (line 13, file "Code")Dismiss
— 阿图里诺
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.