根据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.