繁体   English   中英

通过脚本比较谷歌表中的 A 列。 当匹配正确时,在两侧粘贴偏移值

[英]compare column A in google sheets by scripts. when match is correct then paste offset value in both side

我通过循环比较来自 Sheet 00 和 01 的数据。 我正在使用 VBA,这是我使用 JavaScript 的第一步。

https://docs.google.com/spreadsheets/d/176pTsstzHQ5FfhEvFJswQUidIGMGTi6jjkTavj2BQOQ/edit?usp=sharing

在输出中,我有重复的数据。 现在,我尝试在 logger.log 中找到一些要理解的点,如果我理解我需要在匹配到下一次迭代后跳过循环。 我要求支持我在正确指导我做错的地方:) 提前谢谢你。

比较 COL_A - 找到 - 唯一 - 在某个工作簿中的 2 张纸中。 sheet00 收集新数据以与工作表 01 进行比较。问题是:匹配 find1,find2 后 - 我在输出中有重复的行。 find_is_value_is_exist_then_paste_in_both_side

function abc() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh_0=ss.getSheetByName("CA_SHEET_00")
  var lastRow=sh_0.getLastRow()
  var CA_Sheet_00= sh_0.getRange(2,1,lastRow-1,12).getValues();
   Logger.log('LastRow 00_CA_SHEET'+' - row - '+lastRow);
  var sh_1=ss.getSheetByName("AA_01") 
  var lastRow_01=sh_1.getLastRow()
  var AA_01 = sh_1.getRange(2,1,lastRow_01-1,12).getValues();
   Logger.log('lastRow_01 AA_01'+' - row - '+lastRow_01);      
   var aaa = [];
   var bbb = [];
     i=0;
     j=0;  
    for (var i = 0; i < CA_Sheet_00.length; i++) {
    for (var j = 0; j < AA_01.length; j++) {        
        if(CA_Sheet_00[i][0]===AA_01[j][0]){  
         Logger.log('00'+CA_Sheet_00[i][0]+' - CA_SHEET_00 - row '+[i]);
         Logger.log('01'+AA_01[j][0]+' - AA_01 - row '+[j]);   
         aaa.push([CA_Sheet_00[i][11],CA_Sheet_00[3],AA_01[4],]);
         bbb.push([CA_Sheet_00[j][3],]);       
     sh_0.getRange(2+i,13,aaa.length,3).setValues(aaa);   // 00
     sh_1.getRange(2+j,13,bbb.length,1).setValues(bbb);  }} }}

Copper修改代码后,它将被定义为这样。 我只是将列中的输出分开为单个 (13,14,15)

 function abc() { var ss=SpreadsheetApp.getActive(); var sh0=ss.getSheetByName("CA_SHEET_00"); var vA=sh0.getRange(2,1,sh0.getLastRow()-1,12).getValues(); var sh1=ss.getSheetByName("AA_01") var vB=sh1.getRange(2,1,sh1.getLastRow()-1,12).getValues(); for(var i=0;i<vA.length;i++) { for(var j=0;j<vB.length;j++) { if(vA[i][0]==vB[j][0]){ sh0.getRange(2+i,13).setValue(Utilities.formatString('%s',vA[i][11])); sh0.getRange(2+i,14).setValue(Utilities.formatString('%s',vA[i][3])); sh0.getRange(2+i,15).setValue(Utilities.formatString('%s',vA[i][0])); sh1.getRange(2+j,13).setValue(vA[i][3]); } } } }

我不明白你的问题是什么,但我认为这就是你试图用你的代码来完成的。

function abc() {
  var ss=SpreadsheetApp.getActive();
  var sh0=ss.getSheetByName("CA_SHEET_00");
  var vA=sh0.getRange(2,1,sh0.getLastRow()-1,12).getValues();
  var sh1=ss.getSheetByName("AA_01") 
  var vB=sh1.getRange(2,1,sh1.getLastRow()-1,12).getValues();
  for(var i=0;i<vA.length;i++) {
    for(var j=0;j<vB.length;j++) {        
      if(vA[i][0]==vB[j][0]){     
        sh0.getRange(2+i,13).setValue(Utilities.formatString('%s,%s,%s',vA[i][11],vA[i][3],vB[i][4]));   
        sh1.getRange(2+j,13).setValue(vA[i][3]);  
      }
    } 
  }
}

如果我完全没有抓住要点,我深表歉意;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM