0

ここにファイル https://docs.google.com/spreadsheet/ccc?key=0AurtxTJwggIpdG9GaE1TOV9wMEw2UHhjZVJyUXVETUE

シートKeyで、何を意味するのかを確認できます。
すべてのシートで、最初に列Bで参照(Key!B1)が立っている行を検索し、次にこの行から開始して、列Cで参照(Key!B1)を検索します。 !B2)は最初の略です。
つまり、カップルを探して、列Cのセルをアクティブセルにします。

スクリプトはデバッグモードで
動作しており、シートキーのボタンを使用して実行するだけで、選択するセルが見つかった(ロガーに記録されている)場合でも、適切なセルを「選択しない」ようにします。

色関数を使用します
。つまり、青または赤が選択されるセルであり、選択されない場合もあります。

コード :

function lookFor() {
   var ss=SpreadsheetApp.getActiveSpreadsheet();
var referSheet=ss.getSheetByName("Key");
  var sheetToCheck = new Array;
  sheetToCheck[0]=ss.getSheetByName("work");
  sheetToCheck[1]=ss.getSheetByName("user");
  sheetToCheck[2]=ss.getSheetByName("tax");
  sheetToCheck[3]=ss.getSheetByName("cont");
  sheetToCheck[4]=ss.getSheetByName("ind");

  var referenceB=referSheet.getRange("B1").getValue();
  var referenceC=referSheet.getRange("B2").getValue();
  //loop to work with  all reference as long as there are data in the column A
 for (j in sheetToCheck){
   sheetToCheck[j].setActiveCell("A1");
   var dataToCheck=new Array;
   dataToCheck=sheetToCheck[j].getRange(1,2,sheetToCheck[j].getLastRow(),2).getValues();
   for (i in dataToCheck){
     var done=false;
        if (dataToCheck[i][0]==referenceB){
          for (k=i;k<dataToCheck.length;k++){
            if (dataToCheck[k][1]==referenceC){
              //this part is user to change the color of the cell, to check if the code is working well
              if (sheetToCheck[j].getRange(parseInt(k)+1,3,1,1).getBackgroundColor()=="red"){
            sheetToCheck[j].getRange(parseInt(k)+1,3,1,1).setBackgroundColor("blue"); 
             }
             else
            {
            sheetToCheck[j].getRange(parseInt(k)+1,3,1,1).setBackgroundColor("red"); 
                }
            var cell=sheetToCheck[j].getRange(parseInt(k)+1,3,1,1).getA1Notation() ; 
              sheetToCheck[j].setActiveCell(cell);  
               SpreadsheetApp.flush();
            done=true;
            Logger.log("Sheet :"+sheetToCheck[j].getName()+" - Cell :"+cell);
              break;
           }
        }
          if (done==true){
           break; 
          }
      }
   }
 }

}
enter code here
4

1 に答える 1

0

スクリプトでこれをすでに修正していることに気づきました。

  var referenceB=referSheet.getRange("B1").getValue(); //A2
  var referenceC=referSheet.getRange("B2").getValue(); //B2

これがあなたのコードの短いバージョンです:)

function LookForCity() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var referSheet = ss.getSheetByName("Key").getDataRange().getValues()[1];
  var sheetName = ["work", "user", "tax", "cont", "ind"];

 for (j in sheetName){
   var sheet = ss.getSheetByName(sheetName[j]);
   var values = sheet.getDataRange().getValues(); 
   for(i in values){
     if(values[i][1] == referSheet[0] && values[i][2] == referSheet[1]){
       Logger.log('Sheet: ' + sheetName[j]+  ' Cell: C'+(parseInt(i)+1) );
       sheet.setActiveCell(sheet.getRange(parseInt(i)+1, 3));
       Utilities.sleep(3000);
       break;
     }
   }
 }
}
于 2012-05-07T00:07:10.627 に答える