Googleスプレッドシートのセルの色に基づいてデータを合計する


14

私はこの質問を見ましたが、同じ問題に直面していますが、その質問への答えは私の場合には役に立ちません。

頻繁に変更される大きなスプレッドシートがあります。したがって、その質問に受け入れられた解決策によれば、すべての入力された列を複製することは難しく、セルの背景色を変更するたびにもう1つのセルを編集するのは面倒です。

Googleスプレッドシートのセルの背景色に関する条件に基づいてデータを合計する方法はありませんか?

回答:


14

同様の質問に対する私の答えが役立つかどうかを確認しください。

更新:

Google Docs Scriptギャラリーへの私の提出は受け入れられ、希望する機能を得るためにそれをインストールできます。

手順:

  • スプレッドシートを開きます
  • メニューで[ ツール ] -> [ スクリプトギャラリー ]に移動します
  • 合計を検索
  • インストールをクリックします
  • スクリプトを信頼する場合は[ 承認 ]ボタンをクリックし、[ 閉じる]
  • スプレッドシートに戻る

これで、スプレッドシートの数式で使用できる次の3つの関数が追加されました。

  • sumWhereBackgroundColorIs(color, rangeSpecification)
  • sumWhereBackgroundColorIsNot(color, rangeSpecification)
  • getBackgroundColor(rangeSpecification)

そのため、rangeSpecificationパラメーターには引用符(")が必要です。

例えば:

=sumWhereBackgroundColorIs("white", "A1:C4")

背景が白のA1:C4範囲内のすべてのセルの値を合計します。

特定のセルの色がわからない場合は、提供されているgetBackgroundColor関数を使用して色を調べることができます。いくつかの色が(例えば、RGBコードとして表現されるので、この機能は、必要である#00ff00代わりにgreen)。


2
getBackgroundColor()推奨されていません。おそらく、コードを更新できますか?
ジェイコブヤントゥインストラ

2
@JacobJanTuinstraコードを更新しましたが、Googleが提出物をレビューするのに時間がかかります。それまでの間、このコード
Cristian Lupascu

2
@domenはい、あります:github.com/clupascu/GoogleApps_SumByColor/blob/master/…。非常にきれいなソリューションではありませんが、動作します。
クリスチャンルパスク

2
スクリプトギャラリーはアドオンに置き換えられました。アドオンの下に「色による合計」が見つかりません。アドオンを使用するには、スクリプトをアドオンに送信する必要がありますか?
ジェフロックハート14年

3
@ w0lf新しいGoogleスプレッドシートは、スクリプトギャラリーをサポートしなくなったようです。メッセージとともに新しいアドオンにリダイレクトします。スクリプトエディタはまだ利用可能であり、そこでコードを使用しました。フォークを作成し、合計で空の(数値でない)セルをスキップするためのサポートを追加しました(そうでない場合、空のセルが範囲内に存在するとエラーが発生します):gist.github.com/jeffdgr8/1553faa6360ad04e9c17
ジェフロックハート

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
アルトゥリーノ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.