メインコンテンツへスキップ

Googleスプレッドシートのセルの色に基づいてセルをカウントまたは合計するにはどうすればよいですか?

次のスクリーンショットに示すように、特定のセルの背景色に基づいてセル値をカウントまたは合計して、結果を取得します。 この記事では、GoogleスプレッドシートとMicrosoftExcelでこのタスクを解決する方法について説明します。

Googleスプレッドシートのスクリプトを使用して、セルの色に基づいてセル値をカウントします

Googleスプレッドシートのスクリプトを使用して、セルの色に基づいてセルの値を合計します

MicrosoftExcelのKutoolsfor Excelを使用して、セルの色のセル値をカウントまたは合計します。


Googleスプレッドシートのスクリプトを使用して、セルの色に基づいてセル値をカウントします

次のスクリプトは、特定のセルの色に基づいてセル値をカウントするのに役立ちます。次のようにしてください。

1に設定します。 OK をクリックします。 工具 > スクリプトエディタ、スクリーンショットを参照してください:

2。 開いたプロジェクトウィンドウで、をクリックします File > NEW > スクリプトファイル コードウィンドウを開くには、スクリーンショットを参照してください。

3。 プロンプトボックスに、このスクリプトコードの名前を入力してください。スクリーンショットを参照してください。

4に設定します。 OK をクリックします。 OK 次に、次のコードをコピーして貼り付け、元のコードをコードモジュールに置き換えます。スクリーンショットを参照してください。

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;
};

5。 次に、このスクリプトコードを保存し、シートに戻って、次の式を入力します。 = countcoloredcells(A1:E11、A1) 空白のセルに入れて、を押します 入力します 計算結果を取得するためのキー。 スクリーンショットを参照してください:

Note:この式では: A1:E11 使用するデータ範囲は、 A1 カウントしたい特定の色で満たされたセルです。

6。 上記の式を繰り返して、他の特定の色のセルを数えます。


Googleスプレッドシートのスクリプトを使用して、セルの色に基づいてセルの値を合計します

セル値を特定のセルの色で合計するには、以下のスクリプトコードを適用してください。

1. 工具 > スクリプトエディタ プロジェクトウィンドウに移動し、をクリックします File > NEW > スクリプトファイル 別の新しいコードモジュールを挿入するには、プロンプトボックスに、このスクリプトの名前を入力してください。スクリーンショットを参照してください。

2に設定します。 OK をクリックします。 OK 開いたコードモジュールで、スクリプトコードをコピーして貼り付け、元のコードを置き換えます。スクリーンショットを参照してください。

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;
};

3。 次に、このコードを保存し、シートに戻って、次の式を入力します。 = sumcoloredcells(A1:E11、A1) 空白のセルに入れて、 入力します 計算結果を取得するためのキー。スクリーンショットを参照してください。

Note:この式では: A1:E11 使用するデータ範囲は、 A1 合計する特定の背景色のセルです。

4。 次に、上記の数式を繰り返して、他の特定の色のセルを合計できます。


MicrosoftExcelのKutoolsfor Excelを使用して、セルの色のセル値をカウントまたは合計します。

Microsoft Excelで、特定のセルの色に基づいてセル値をカウントまたは合計するには、 Kutools for Excelさん 色で数える ユーティリティは、このタスクをできるだけ早く完了するのに役立ちます。

Kutools for Excel : 300以上の便利なExcelアドインがあり、30日以内に制限なしで無料で試すことができます. 

インストールした後 Kutools for Excel、次のようにしてください。

1。 セルの色に基づいてカウントまたは合計する範囲のセルを選択し、[ クツールズプラス > 色で数える、スクリーンショットを参照してください:

2。 の中に 色で数える ダイアログボックスで、 標準フォーマット カラー方式 ドロップダウンリストを選択し、 経歴 カウントタイプ ドロップダウン、スクリーンショットを参照してください:

3。 次に、をクリックします レポートを生成する ボタンをクリックすると、計算結果を含む新しいワークシートが一度に生成されます。スクリーンショットを参照してください。

Note:この強力な機能を使用すると、条件付き書式またはフォントの色に基づいてセル値を計算することもできます。

今すぐExcel用のダウンロードと無料トライアルKutoolsをクリックしてください!

最高のオフィス生産性向上ツール

人気の機能: 重複を検索、強調表示、または識別する   |  空白行を削除する   |  データを失わずに列またはセルを結合する   |   数式なしのラウンド ...
スーパールックアップ: 複数の基準の VLookup    複数の値の VLookup  |   複数のシートにわたる VLookup   |   ファジールックアップ ....
詳細ドロップダウン リスト: ドロップダウンリストを素早く作成する   |  依存関係のドロップダウン リスト   |  複数選択のドロップダウンリスト ....
列マネージャー: 特定の数の列を追加する  |  列の移動  |  Toggle 非表示列の表示ステータス  |  範囲と列の比較 ...
注目の機能: グリッドフォーカス   |  デザインビュー   |   ビッグフォーミュラバー    ワークブックとシートマネージャー   |  リソースライブラリ (自動テキスト)   |  日付ピッカー   |  ワークシートを組み合わせる   |  セルの暗号化/復号化    リストごとにメールを送信する   |  スーパーフィルター   |   特殊フィルター (太字/斜体/取り消し線をフィルター...) ...
上位 15 のツールセット12 テキスト 工具 (テキストを追加, 文字を削除する、...)   |   50+ チャート 種類 (ガントチャート、...)   |   40+ 実用的 (誕生日に基づいて年齢を計算する、...)   |   19 挿入 工具 (QRコードを挿入, パスから画像を挿入、...)   |   12 変換 工具 (数字から言葉へ, 通貨の換算、...)   |   7 マージ&スプリット 工具 (高度な結合行, 分割セル、...)   |   ... もっと

Kutools for Excel で Excel スキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、生産性を向上させ、時間を節約するための300以上の高度な機能を提供します。  最も必要な機能を入手するにはここをクリックしてください...

kteタブ201905


Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
Comments (79)
Rated 5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
Hey I just wanted to thank you for this guide. It totally worked! Awesome! 👍
This comment was minimized by the moderator on the site
Hii, i need help!
Did somebody have the right script?
if u have it, can u pls send me?
thanks
This comment was minimized by the moderator on the site
i need the auto update for the sumcoloredcells formula
do you know how can i have it?
This comment was minimized by the moderator on the site
questo funziona

// restituisce la somma dei valori in un range in base al colore di sfondo della cella
// uso: =SommaSeSfondo(range;cella colore di riferimento )
// =SommaSeSfondo(B1:B8;E1)

function SommaSeSfondo(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;
};
This comment was minimized by the moderator on the site
Hi Samal,

You have to use the formula:

=SommeCouleurs(A:A;A1) => A:A : columns that contain the colors to count and A1 : The cell that contains the example of the color.
This comment was minimized by the moderator on the site
'm having a problem in the script for google sheets: TypeError: Cannot call method "pop" of null. (line 5, file "SumByColor"). Can you please help?
This comment was minimized by the moderator on the site
'm having a problem in the script for google sheets: TypeError: Cannot call method "pop" of null. (line 5, file "SumByColor"). Can you please help?
This comment was minimized by the moderator on the site
'm having a problem in the script for google sheets: TypeError: Cannot call method "pop" of null. (line 5, file "SumByColor"). Can you please help?
This comment was minimized by the moderator on the site
Bonjour a tous,

J'utilise Google Sheet en version Française et voici le script le plus fonctionnel que j'ai trouvé:

function SommeCouleurs(plage,couleur) {
var activeRange = SpreadsheetApp.getActiveRange();
var activeSheet = activeRange.getSheet();
var formule = activeRange.getFormula();


var laplage = formule.match(/\((.*)\;/).pop();
var range = activeSheet.getRange(laplage);
var bg = range.getBackgrounds();
var values = range.getValues();

var lacouleur = formule.match(/\;(.*)\)/).pop();
var colorCell = activeSheet.getRange(lacouleur);
var color = colorCell.getBackground();

var total = 0;

for(var i=0;i<bg.length;i++)
for(var j=0;j<bg[0].length;j++)
if( bg[i][j] == color )
total=total+(values[i][j]*1);
return total;

};


function CompteCouleurs(plage,couleur) {
var activeRange = SpreadsheetApp.getActiveRange();
var activeSheet = activeRange.getSheet();
var formule = activeRange.getFormula();


var laplage = formule.match(/\((.*)\;/).pop();
var range = activeSheet.getRange(laplage);
var bg = range.getBackgrounds();
var values = range.getValues();

var lacouleur = formule.match(/\;(.*)\)/).pop();
var colorCell = activeSheet.getRange(lacouleur);
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;
};

Formule a utiliser:

=CompteCouleurs(A2:A;A1)

Il s'actualise automatiquement.
En espérant que ca vous aidera
This comment was minimized by the moderator on the site
Добрый день!
Проверил, автоматически не пересчитывает, если изменить цвет в диапазоне ((
This comment was minimized by the moderator on the site
非常感謝大大分享~很實用我是用Google 試算表編輯
請問程式碼能教怎麼加總指定的文字顏色的數字總和嗎? (把 儲存格顏色 改為 文字顏色) 拜託~~
This comment was minimized by the moderator on the site
Hi, I have set it in google sheets as You have described, but it showed me error "Type error: Cannot read property 'pop' of null". PLS can you help me?
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations