如何计算具有特定文字和颜色的单元格

时间:2019-08-25 12:42:27

标签: javascript google-apps-script google-sheets

我需要计算Google表格中具有特定颜色和文字的单元格。 我找到了一个用于计算颜色的单元格的代码,这里是

function countColor(countRange,colorRef) {
  var activeRg = SpreadsheetApp.getActiveRange();
  var activeSht = SpreadsheetApp.getActiveSheet();
  var activeformula = activeRg.getFormula();
  var countRangeAddress = activeformula.match(/\((.*)\,/).pop().trim();
  var backGrounds = activeSht.getRange(countRangeAddress).getBackgrounds();  
  var colorRefAddress = activeformula.match(/\,(.*)\)/).pop().trim();
  var BackGround = activeSht.getRange(colorRefAddress).getBackground();
  var countCells = 0;
  for (var i = 0; i < backGrounds.length; i++)
    for (var k = 0; k < backGrounds[i].length; k++)
      if ( backGrounds[i][k] == BackGround )
        countCells = countCells + 1;
  return countCells;
};

因此Google表格中的公式如下:

=countcolor(Sheet1!A:A,C1)

其中A:A1是范围,而C1是具有颜色样本的单元格

我的一个朋友对我有所帮助,并创建了一个用于计算文本和颜色的函数,但应在函数内部键入文本。 这是代码:

function count_Color_and_text_Cells(countRange,colorRef) { 
var activeRg = SpreadsheetApp.getActiveRange(); 
var activeSht = SpreadsheetApp.getActiveSheet(); 
var activeformula = activeRg.getFormula(); 
var countRangeAddress = activeformula.match(/\((.*)\,/).pop().trim(); 
var backGrounds = activeSht.getRange(countRangeAddress).getBackgrounds(); 
var text = "test" // Text you whant to count
var arrData = activeSht.getRange(countRangeAddress).getDisplayValues() 
var colorRefAddress = activeformula.match(/\,(.*)\)/).pop().trim(); 
var BackGround = activeSht.getRange(colorRefAddress).getBackground(); 
var countCells = 0; 
for (var row = 0; row < backGrounds.length; row++) 
for (var col = 0; col < backGrounds[row].length; col++) 
if ( backGrounds[row][col] == BackGround ) 
if (arrData[row][col].match(text)) 
countCells = countCells + 1; 
return countCells; 

}

我需要做的是在功能中使文本成为标准,这样我就可以选择范围,键入特定的文本并获得结果。期望它看起来像这样:

=countcolor(Sheet1!A:A,"TextSample",C1)

因此它可以计算用户在公式中键入的具有正确颜色和文本的单元格。

谢谢,祝你有美好的一天!

1 个答案:

答案 0 :(得分:0)

您可以像这样提供文本作为参数:

function count_Color_and_text_Cells(countRange,text,colorRef) { 

不要再次声明text,即删除var text=''

阅读和练习: