1

私が欲しい、

Sheet1 ColumnB = Sheet89 ColumnA の場合

次に、一致した Sheet1 列 B のセルが緑色になります。これが私のデモ シートです。

いくつかのガイドラインに基づいて、これを作成しましたが、機能しません。

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var columnB = sheet.getRange(1, 2, sheet.getLastRow()-1, 1);
  var bValues = columnB.getValues();
  var sheet89 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet89');
  var columnO = sheet89.getRange(1, 1, sheet.getLastRow()-1, 1);
  var oValues = columnO.getValues();

        for (var h = 0; h < bValues.length; h++) {
           for (var i = 0; i < oValues.length; i++) {
              if (oValues[i][0] == bValues[h][0]) {
                 sheet.getRange(i + 2, 1, 1, 1).setBackgroundColor('green');
              }
           }
        }
}
4

2 に答える 2

0

以下のこのソリューションは、sheet1 の列 B の値を使用して各セルを反復処理し、sheet89 の列 A のすべての値に対してチェックします (getValues 関数によると、この ColumnO という名前を付けましたが、列 A から値を取得します)。

一致が見つかった場合は、シート 1 の列 B のセルが緑色に変わります。サンプル コードでは、i ループ変数 (sheet89 の行を反復処理) を使用して、sheet1 のセルを緑色にします。どのセルを緑色にしたいのかは明確ではありません。シート1のセルだと思ったので、コードを次のように変更しました

sheet.getRange(h+1, 2).setBackgroundColor('green');

また、1 つのセルの getRange 関数は 2 つの引数しか必要としないため、セルを緑色にする行の numRows および numColumns 引数を削除しました。

bValues と oValues が最後の行を除外する理由はわかりませんが、空白のワークシートで実行すると何らかの理由でコードが失敗するため、これらのそれぞれの -1 を削除しました。getLastRow() は、シート内の次の空白行ではなく、値を持つ最後の行を返します。シート全体をキャプチャする場合は、-1 を使用しないでください。

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');

  var columnB = sheet.getRange(1, 2, sheet.getLastRow(), 1);
  var bValues = columnB.getValues();

  var sheet89 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet89');
  var columnO = sheet89.getRange(1, 1, sheet.getLastRow(), 1);
  var oValues = columnO.getValues();

  for (var h = 0; h < bValues.length; h++) {
     for (var i = 0; i < oValues.length; i++) {

       if (oValues[i][0] == bValues[h][0]) {
         sheet.getRange(h + 1, 2).setBackgroundColor('green');
       }  
     }
  }
}
于 2014-03-22T06:05:09.157 に答える