2016-10-07 3 views
0

私は2枚あります。
最初のもの( "codes")には、数字と文字列であるハイフン(AA-01など)のラベルがいくつかあります。
2番目のシート( "places")には、どこにいても異なる行と列にあるすべてのラベルのリストがあります。入力されるたびに列の値を見つけ、別のシートで値を見つけて色付けしますか?

私は、シート "コード"にラベルを受け取り、それをシートの "場所"で見つけて色付けするコードを書く必要があります。
これはonEditのようなものでなければなりません。ラベルを消去すると、2番目のシート(「場所」)のセルが再び白い背景に戻る必要があります。
これはライブプロセスのようです。最初のシートにラベルを入力すると、このプロセスが起こり、2番目のシートの値が見つかって色付けされます。

私はこれを作ったが、なぜ動作していないのかわからない!

function color() { 
    var targetSheet = SpreadsheetApp.getActive().getSheetByName('places'); 
    var sheet  = SpreadsheetApp.getActive().getSheetByName('codes'); 
    var ToPlace  = sheet.getRange("F13:F300").getValues(); 
    var targetCell = targetSheet.getRange("A1:Z").getValues(); 


    for(var i = 0; i < toPlace.length; i++) { 
    if(toPlace[i] == targetCell){ 
     targetSheet.setBackground("yellow"); 
    } 
    } 
} 
+0

を、あなたは 'ToPlace'を宣言したが、toPlace' – whatAboutJohn

+0

は基本的にあなたが他の上に1枚の変化をストリーミングする'としてループの内部で使用されていますか? – whatAboutJohn

+0

はい。私の最初のシート(コード)は常に変化しています(列F13:F)。 1時間ごとなど、一部の値が入力され、一部の値が消去されます。一方、私の2番目のシート(「場所」)では、固定データベースのように見えますが、列「F13:F」にあるシート「コード」内のすべてのラベルの異なるセルと列にあります。色の背景でそれらを参照してください。 – Alex

答えて

0

現在、文字列の配列を取得するコードの行を繰り返しています。
これらの配列を配列の配列の配列であるtargetCellと比較します。あなたはこのような何かDOEができ

function onEdit(e) { 
    var targetSheet = SpreadsheetApp.getActive().getSheetByName('places'); 
    var targetCells = targetSheet.getRange("A1:Z").getValues(); 

    for (var row = 0; row < targetSheet.getLastRow(); row++) { 
    for (var col = 0; col < targetSheet.getLastColumn(); col++) { 
     if (targetCells[row][col] === e.value) { 
     targetSheet.getRange(row+1, col+1).setBackground("yellow"); 
     return; 
     } else if (targetCells[row][col] === e.oldValue) { 
     targetSheet.getRange(row+1, col+1).setBackground("white"); 
     } 
    } 
    } 
} 
関連する問題