У меня есть уникальный идентификатор ('ID1') в столбце A в sheet1, и мне нужно сравнить его со столбцом B в sheet2, где находятся ID ('ID2').

Поэтому мне нужно сравнить те из ID и проверить, совпадают ли некоторые из них, если я хочу, я хочу изменить значение ячейки в той же строке, что и «ID1» в sheet1, но в другом столбце, скажем, C.

function IDValidation() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName('Sheet1');
  var sheet2 = ss.getSheetByName("Sheet2");
  var Sheet1range = sheet1.getRange(2,1,sheet1.getLastRow()); //header is row 1
  var Sheet2range = sheet2.getRange(2, 2);    //header is row 1
  var Sheet1cellValue = Sheet1range.getValues();
  var Sheet2cellValue = Sheet2range.getValues();//Look here

  for(i = 0; i<Sheet1cellValue .length-1; i++){
     if(Sheet1cellValue [i][0] == Sheet2cellValue)
     {
       ss.getSheetByName("Sheet1").getRange(i+2,3).setValue("Close");

}
}
}
0
vipmaciej 19 Апр 2019 в 14:12

2 ответа

Лучший ответ

Не уверен, что ты хочешь, но просто пытаюсь помочь

Вот несколько вариантов.

Попробуй это:

function IDValidation() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sh1=ss.getSheetByName('Sheet1');
  var sh2=ss.getSheetByName("Sheet2");
  var sh1rg=sh1.getRange(2,1,sh1.getLastRow()); //header is row 1
  var sh2rg=sh2.getRange(2,2);//header is row 1
  var sh1cvA=sh1rg.getValues();
  var sh2cV=sh2rg.getValue();//look here
  for(var i=0;i<sh1cvA.length-1; i++){
    if(sh1cvA[i][0]==sh2cV){
      sh1.getRange(i+2,3).setValue("Close");
    }
  }
}

Лист1

enter image description here

Sheet2

enter image description here

Это похоже на работу. Да нет?


Я не знаю, возможно, вы ищете все совпадения между Sheet1 Column1 и Sheet2 Column2. Вот что делает эта функция. Я использую случайные числа от 0 до 50, а не уникальные идентификаторы, поэтому есть много совпадений. Я перестал помещать close в column3 и начал описывать, где совпадения.

Вот код:

function IDValidation1() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sh1=ss.getSheetByName('Sheet1');
  var sh2=ss.getSheetByName("Sheet2");
  var sh1rg=sh1.getRange(2,1,sh1.getLastRow(),1); //header is row 1
  var sh2rg=sh2.getRange(2,2,sh2.getLastRow(),1);//header is row 1
  var sh1cvA=sh1rg.getValues();
  var sh2cvA=sh2rg.getValues();
  for(var i=0;i<sh1cvA.length-1; i++){
    for(var j=0;j<sh2cvA.length;j++) {
      if(sh1cvA[i][0]==sh2cvA[j][0]){
        sh1.getRange(i+2,3).setValue(Utilities.formatString('Sheet2 Row:%s == Sheet1 Row:%s = %s',j+2,i+2,sh1cvA[i][0]));
      }
    }
  }
}

Вот Лист1 После запуска:

enter image description here

А это Sheet2: (я выбрал слишком много строк и не смог уместить их все на моем экране)

enter image description here

0
Cooper 22 Апр 2019 в 00:21

Я думаю, что вы все очень хорошо поняли, потому что ваш код является ответом на мою проблему :) Я добавил только в строку '10' -1 с длиной, чтобы не считать последнюю строку в sheet2, которая является пустой. И я буду менять setValue, конечно. Спасибо всем.

function IDValidation1() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sh1=ss.getSheetByName('Sheet1');
  var sh2=ss.getSheetByName("Sheet2");
  var sh1rg=sh1.getRange(2,1,sh1.getLastRow(),1); //header is row 1
  var sh2rg=sh2.getRange(2,2,sh2.getLastRow(),1);//header is row 1
  var sh1cvA=sh1rg.getValues();
  var sh2cvA=sh2rg.getValues();
  for(var i=0;i<sh1cvA.length-1; i++){
    for(var j=0;j<sh2cvA.length-1;j++) {
      if(sh1cvA[i][0]==sh2cvA[j][0]){
        sh1.getRange(i+2,3).setValue(Utilities.formatString('Sheet2 Row:%s == Sheet1 Row:%s = %s',j+2,i+2,sh1cvA[i][0]));
      }
    }
  }
}
0
vipmaciej 22 Апр 2019 в 08:33