首页 > 解决方案 > 有没有办法在谷歌工作表上选择一组特定的单元格并将它们复制到另一个工作表?

问题描述

我在电子表格中有两张工作表。

电子表格 1 使用进入主列表的新数据进行更新。电子表格 2 是主列表。

每周电子表格 1 获取新数据,从 B2 到 B(N) 的长度可能在 30 到 50 个条目之间,这取决于一周内收集了多少数据。

主列表包含所有以前的数据条目。

我正在寻找一个脚本,从电子表格 1 中选择“B”列中的所有新数据,复制它们并将值仅粘贴到“C”列的主列表末尾。

我已经用一个单独的脚本达到了这一点,它只选择主表并在填充数据后选择一个单元格:(例如,如果主列表有 400 个条目,它会选择单元格 401)。

任何关于这方面的指导都会很棒

function jump() {
  //Moves to the masterlist sheet and finds the last row filled with data and moves down by one
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var activeSheet = ss.getSheetByName('masterlist'); //source sheet
  var obSheet = SpreadsheetApp.getActive();
  
  activeSheet.activate() //Move to the source sheet
  
  //Move to the last filled row w/data and go down by 1
  var values = activeSheet.getRange("C:C").getValues();
  var maxIndex = values.reduce(function(maxIndex, row, index) {
    return row[0] === "" ? maxIndex : index;
  }, 0);
  activeSheet.setActiveRange(activeSheet.getRange(maxIndex + 2, 3));
};

标签: google-apps-scriptgoogle-sheets

解决方案


function AWayToCopyDataFromOneRangeToAnother() {
  const ss=SpreadsheetApp.getActive();
  const sh1=ss.getSheetByName('Sheet1');
  const sh2=ss.getSheetByName('Sheet2');
  sh2.clear();
  const rg1=sh1.getRange(1,1,sh1.getLastRow(),sh1.getLastColumn());
  const rg2=sh2.getRange(1,1);
  rg1.copyTo(rg2);
}

复制到

function AWayToCopyDataFromOneRangeToAnotherSpreadSheetValuesOnly() {
  const ss=SpreadsheetApp.getActive();
  const sh1=ss.getSheetByName('Sheet1');
  const ss2=SpreadsheetApp.openById('1VsHWPCWE6Xz4BLjVK89rnonBZO-8tK5HW_O-mMwFe54');
  const sh2=ss2.getSheetByName('Sheet2');
  sh2.clear();
  const rg1=sh1.getRange(1,1,sh1.getLastRow(),sh1.getLastColumn());
  const vs1=rg1.getValues();
  sh2.getRange(sh2.getLastRow()+1,1,vs1.length,vs1[0].length).setValues(vs1);
  
}
  

设置值()


推荐阅读