将行值复制到新工作表(如果它存在于另一工作表中) [英] Copy row values to a new sheet if it exist in another sheet

查看:76
本文介绍了将行值复制到新工作表(如果它存在于另一工作表中)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对Google Script很陌生,我有一个脚本可以创建。我发现这个问题 a>,在那里他应该删除行,如果它的值存在于另一张表中。现在,我的情况不同了。以下是我的示例电子表格。在该Google电子表格中,我有3张表。在前两张纸上将比较的唯一值是第一列ID NUMBER。

给定值, 784 | John Steep | IT部门存在于前两张中,因此应将整行复制到sheet3。



总结,如果ID号存在于Sheet 1和2,它应该复制到工作表3上。



我试图修改脚本,但是我无法完成工作:

  function copyRowtoSheet3(){
var s1 = SpreadsheetApp.openById(1RlQTLZyPLasoJGplKemKg9qgcLcvCZZ_tPn6lWXEePw)。getSheetByName('Sheet1');
var s2 = SpreadsheetApp.openById(1RlQTLZyPLasoJGplKemKg9qgcLcvCZZ_tPn6lWXEePw)。getSheetByName('Sheet2');
var s3 = SpreadsheetApp.openById(1RlQTLZyPLasoJGplKemKg9qgcLcvCZZ_tPn6lWXEePw)。getSheetByName('Sheet3');

var values1 = s1.getDataRange()。getValues();
var values2 = s2.getDataRange()。getValues();

var resultArray = [];

for(var n in values1){
var keep = true
for(var p in values2){
if(values1 [n] [0] = = values2 [p] [0]&& values1 [n] [1] == values2 [p] [1]){
keep = false;休息;
}
}
if(keep){
resultArray.push(values1 [n])};
}
s1.clear()

s1.getRange(1,1,resultArray.length,resultArray [0] .length).setValues(resultArray);
}

谢谢。任何帮助/建议非常感谢。

解决方案

不确定您的条件是否正常工作...获取两个表中相同的值比你引用的例子更容易,只是保持数据在equals == true的地方。



像这样尝试(将ID改为你的):

  function copyRowtoSheet3(){
var s1 = SpreadsheetApp.openById(1x8buwr ______ w7MeqZAiJJIX0yC-oITBAtykBAM)。getSheetByName('Sheet1');
var s2 = SpreadsheetApp.openById(1x8buwr ______ w7MeqZAiJJIX0yC-oITBAtykBAM)。getSheetByName('Sheet2');
var s3 = SpreadsheetApp.openById(1x8buwr ______ w7MeqZAiJJIX0yC-oITBAtykBAM)。getSheetByName('Sheet3');
var values1 = s1.getDataRange()。getValues();
var values2 = s2.getDataRange()。getValues();
var resultArray = [];
for(var n = 0; n var keep = false;
for(var p = 0; p Logger.log(values1 [n] [0] +'=''+ values2 [p] [0]) ;
if(values1 [n] [0] == values2 [p] [0]&& values1 [n] [1] == values2 [p] [1]){
resultArray。推(值1 [N]);
Logger.log('true');
break; //如果值不是唯一的,并且您想保留所有的事件...
}
}
}
s3.getRange(+1 ,1,resultArray.length,resultArray [0]。长度).setValues(resultArray);
}


I am new to Google Script and I have a script to create. I found this question, where in he should delete row if a value in it exists in another sheet. Now, my situation is different. Here is my sample Spreadsheet. In that Google Spreadsheet, I have 3 sheets. The unique value that will be compared on the first 2 sheets is the first column, "ID NUMBER".

Given the values, 784 | John Steep | I.T Department exists in the first 2 sheets therefore the whole row should be copied to sheet3.

Sum up, if that ID NUMBER exists in Sheet 1 and 2, it should be copied on Sheet 3.

I tried to modify the script but I can't make it work:

function copyRowtoSheet3() { 
  var s1 = SpreadsheetApp.openById("1RlQTLZyPLasoJGplKemKg9qgcLcvCZZ_tPn6lWXEePw").getSheetByName('Sheet1');
  var s2 = SpreadsheetApp.openById("1RlQTLZyPLasoJGplKemKg9qgcLcvCZZ_tPn6lWXEePw").getSheetByName('Sheet2'); 
  var s3 = SpreadsheetApp.openById("1RlQTLZyPLasoJGplKemKg9qgcLcvCZZ_tPn6lWXEePw").getSheetByName('Sheet3'); 

  var values1 = s1.getDataRange().getValues();
  var values2 = s2.getDataRange().getValues();

  var resultArray = [];

      for(var n in values1){
        var keep = true
            for(var p in values2){
                  if( values1[n][0] == values2[p][0] && values1[n][1] == values2[p][1]){
                  keep=false ; break ;
                   }
           }
      if(keep){ 
         resultArray.push(values1[n])};
      }
   s1.clear()

   s1.getRange(1,1,resultArray.length,resultArray[0].length).setValues(resultArray);
   }

Thanks. Any help/advice is greatly appreciated.

解决方案

Not sure your condition works... Getting the values that are equal in both sheets is easier than the example you refer to, just keep the data where equality==true.

Try like this (change the ID's to yours):

function copyRowtoSheet3() { 
  var s1 = SpreadsheetApp.openById("1x8buwr______w7MeqZAiJJIX0yC-oITBAtykBAM").getSheetByName('Sheet1');
  var s2 = SpreadsheetApp.openById("1x8buwr______w7MeqZAiJJIX0yC-oITBAtykBAM").getSheetByName('Sheet2'); 
  var s3 = SpreadsheetApp.openById("1x8buwr______w7MeqZAiJJIX0yC-oITBAtykBAM").getSheetByName('Sheet3'); 
  var values1 = s1.getDataRange().getValues();
  var values2 = s2.getDataRange().getValues();
  var resultArray = [];
  for(var n=0; n < values1.length ; n++){
    var keep = false;
    for(var p=0; p < values2.length ; p++){
      Logger.log(values1[n][0]+' =? '+values2[p][0]);
      if( values1[n][0] == values2[p][0] && values1[n][1] == values2[p][1]){
        resultArray.push(values1[n]);
        Logger.log('true');
        break ;// remove this if values are not unique and you want to keep all occurrences...
      }
    }
  }  
  s3.getRange(+1,1,resultArray.length,resultArray[0].length).setValues(resultArray);
}

这篇关于将行值复制到新工作表(如果它存在于另一工作表中)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆