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

ms exceladvanced excel functionmicrosoft technologies更新于 2024/12/25 2:52:17

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

在本课程中,我们假设您对 Google 表格有基本的了解,并熟悉其用户界面。为了确保您能够轻松跟上学习进度,我们将提供分步说明和屏幕截图。那么,让我们开始探索 Google 表格基于单元格颜色计算的潜力吧!

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

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

步骤 1

假设您的 Google 表格中包含不同单元格颜色。

首先,点击"扩展程序",然后选择"应用脚本"。

扩展程序 > 应用脚本。

步骤 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),然后按 Enter 键获取第一个值。

空单元格 > 公式 > Enter。

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

注意

如果要计算总和,请使用以下代码并使用公式 =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 Sheet 中的单元格颜色对单元格进行计数或求和,以突出显示特定的一组数据。


相关文章


有用资源