0

各列の下部に、その列内の特定の背景色を持つセルの数を表示しようとしています。これは私がやりたいことです: 意図した結果の画像

問題は、これがガント チャートであり、常に行を挿入することです。次を使用して、固定数の行で実行できます。

=countCellsWithBackgroundColor("#cfe2f3", "B1:B22")

私が見つけたこの関数を使用します:

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.getBackgroundColor() == color)
        x++;
    }
  }

  return x;
}

その関数を列のすべてのセルに与える方法がわかりません。「範囲でなければなりません」などのエラーが表示されます。

4

2 に答える 2

0

以下のように関数で配列を使用することにより、同じ結果を達成するためのより効率的な方法を使用できます

function countCellsWithBackgroundColor(color, rangeSpecification) {

  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var backGroundColors = sheet.getRange(rangeSpecification).getBackgrounds();

  var x = 0;

  for (var i = 0; i < backGroundColors.length; i++) {
    for (var j = 0; j < backGroundColors[0].length; j++) {

      if(backGroundColors[i][j] == color){ x++ }
    }
  }
  return x;
}
于 2013-07-26T10:35:48.147 に答える