Googleスプレッドシートを使用して、スタッフがサインインするための毎日のスケジュールとしてマトリックス(時間/アクティビティ)を作成しています。
特定の色で網掛けされている(または網掛けされていない)列のセルの数を計算する数式はありますか?
たとえば、20個のセルが灰色で31個が灰色ではない(他の色の陰影)ので、手動で数える代わりに、リーチ列の下部でこれを計算します。
Googleスプレッドシートを使用して、スタッフがサインインするための毎日のスケジュールとしてマトリックス(時間/アクティビティ)を作成しています。
特定の色で網掛けされている(または網掛けされていない)列のセルの数を計算する数式はありますか?
たとえば、20個のセルが灰色で31個が灰色ではない(他の色の陰影)ので、手動で数える代わりに、リーチ列の下部でこれを計算します。
回答:
Googleスプレッドシートが提供するスクリプト機能を使用して、これを行う方法を見つけました。
方法は次のとおりです。
コード:
function getBackgroundColor(rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSheet();
var cell = sheet.getRange(rangeSpecification);
return cell.getBackground();
}
function sumWhereBackgroundColorIs(color, rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange(rangeSpecification);
var x = 0;
for (var i = 1; i <= range.getNumRows(); i++) {
for (var j = 1; j <= range.getNumColumns(); j++) {
var cell = range.getCell(i, j);
if(cell.getBackground() == color)
x += parseFloat(cell.getValue());
}
}
return x;
}
function countCellsWithBackgroundColor(color, rangeSpecification) {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var range = sheet.getRange(rangeSpecification);
var x = 0;
for (var i = 1; i <= range.getNumRows(); i++) {
for (var j = 1; j <= range.getNumColumns(); j++) {
var cell = range.getCell(i, j);
if(cell.getBackground() == color)
x++;
}
}
return x;
}
上記の手順を実行すると、スプレッドシートで使用できる関数がさらに3つあります。
countCellsWithBackgroundColor(<color>, <range specification>)
sumWhereBackgroundColorIs(<color>, <range specification>)
getBackgroundColor(<cell specification>)
<range specification>
と<cell specification>
はA1表記で表され、引用符で囲む必要があることに注意してください。
たとえば、B2:F13の範囲で、背景色が白に設定されているすべてのセルの数を取得するには、次の数式を入力する必要があります。
=countCellsWithBackgroundColor("white", "B2:F13")
同じセルの合計を計算するには、次の式を使用します。
=sumWhereBackgroundColorIs("white", "B2:F13")
一部のセルでは、背景が「白」、「灰色」などの色に設定されていないことがありますが、のようなRGB色です#6fa8dc
。色が何であるかを推測することはできないため、セルの色(たとえば、B9
)を確認する場合は、次の数式をセルに入力する必要があります。
=getBackgroundColor("B9")
その後、この値を上記の2つの関数のパラメーターとして使用します。
セルの背景色が「テーマの色」の場合、getBackground()
誤って常にが返されるよう#ffffff
です。これを回避する方法は、標準セットの色を使用する以外にありません。
繰り返しになりますが、上記のすべての例の引用に注意してください。それらがなければ、数式は機能しません。
getBackgroundColor()
推奨されていません。おそらく、コードを更新できますか?
Googleドキュメントで特定の色のセルを直接カウントする方法が見つかりませんでした。
何が陰になるのか。自動ですか?それらに値がある場合、自動的に網掛けされますか?その場合は、counta()関数を使用して、値を持つ任意のセルをカウントできます。より複雑なルールのセットが含まれている場合は、countif()関数を使用する必要がある場合があります。
注:列の上部または下部にある追加の行を考慮する必要がある場合があります