如何在 Google 表格中根据单元格颜色进行计数或求和?


在这篇文章中,我们将了解一个有用的工具,它允许您根据电子表格单元格的颜色进行计算。利用此功能,您可以快速分析和得出对已通过颜色编码进行视觉区分的数据的结论。无论您是想计算特定颜色的单元格数量,还是计算与特定颜色相关的值的总和,Google 表格都提供各种内置函数和自定义脚本来完成这些任务。为了适应各种用户的偏好和能力水平,本课程将介绍多种根据单元格颜色进行计数或求和的技术。

在本课程中,我们将假设您对 Google 表格有基本的了解,并且熟悉其用户界面。为了确保您可以轻松地跟随操作,我们将提供分步说明和屏幕截图。因此,让我们开始并发现 Google 表格基于单元格颜色的计算的潜力吧!

根据单元格颜色进行计数或求和

这里我们将首先向工作表添加一个脚本,然后使用公式来完成任务。让我们看一个简单的过程,了解如何在 Google 表格中根据单元格颜色进行计数或求和。

步骤 1

考虑一个 Google 表格,其中包含不同的单元格颜色。

首先,点击“扩展程序”并选择“App Script”。

扩展程序 > App Script。

步骤 2

然后用以下代码替换现有代码,并保存代码。

代码

function countColoredCells(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;
};

步骤 3

然后点击一个空单元格,输入公式 =countcoloredcells(A2:C7,E2),然后点击回车键以获取第一个值。

空单元格 > 公式 > 回车。

然后对所有颜色重复此步骤。

注意

如果要计算总和,请使用以下代码并使用公式 =sumcoloredcells(A2:C7,E2)。

代码

function sumColoredCells(sumRange,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 sumValues = activeSht.getRange(countRangeAddress).getValues();  
   var colorRefAddress = activeformula.match(/\,(.*)\)/).pop().trim();
   var BackGround = activeSht.getRange(colorRefAddress).getBackground();
   var totalValue = 0;
   for (var i = 0; i < backGrounds.length; i++)
      for (var k = 0; k < backGrounds[i].length; k++)
         if ( backGrounds[i][k] == BackGround )
            if ((typeof sumValues[i][k]) == 'number')
               totalValue = totalValue + (sumValues[i][k]);
   return totalValue;
};

结论

在本教程中,我们使用了一个简单的示例来演示如何在 Google 表格中根据单元格颜色进行计数或求和,以突出显示特定数据集。

更新于: 2023-08-21

13K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告