【问题标题】:copy and paste on a variable cell with macro使用宏复制并粘贴到变量单元格上
【发布时间】:2020-05-08 07:55:37
【问题描述】:

我需要在一张纸上复制一个间隔(比如说 Sheet1!C3:V9),然后将其粘贴到另一张纸上,在由 ADRESS 公式确定的可变位置中,(使用我想要的坐标创建一个单元格) ,假设它的单元格 Sheet2!A5。 我尝试使用应用脚本嵌入 INDIRECT 功能,但我没有任何运气。 在下面的代码中,我想要的是用单元格 Sheet2!A5 中的坐标替换随机单元格“H13”,并将值粘贴到该单元格中。

function Macro() {
    var spreadsheet = SpreadsheetApp.getActive();
    spreadsheet.getRange('H13').activate();
    spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet1'), true);
    spreadsheet.getRange('C3:V9').activate();
    spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet2'), true);
    spreadsheet.getRange('Sheet1!C3:V9').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

感谢您的帮助!

【问题讨论】:

  • 您能否出示一份具有所需结果的工作表副本?
  • docs.google.com/spreadsheets/d/… 在 sheet1 中,我将我正在谈论的区间 (sheet2!C3:V9) 粘贴到单元格 H132 中(坐标在单元格 $A$5 中),我想要一个可以做到这一点的代码.. . 我是宏和代码的新手,我正在学习。
  • 所以,如果我理解正确:如果 A2 中的值与 Sheet2!C3:V9 的值之一匹配,您想将该范围复制到 A5 中吗?
  • 不,我希望能够复制范围 Sheet2!C3:V9 并将其粘贴到单元格 H132 中,如 $A$5 中的坐标所述。我正在创建一种工作日历,单元格 A2 是周数,该周从第 132 行开始。我想要一个脚本来“归档”Sheet2!C3:V9 中的时间表并将它们粘贴到正确的一周。
  • 谢谢,很有帮助!!

标签: google-apps-script google-sheets scripting


【解决方案1】:

这个解决方案怎么样?如果有人编辑 A2 单元格以将周数更改为当前周数,它将触发以下脚本,该脚本将在 D 列中搜索该周数。如果找到它,它将复制来自 Sheet2!C3:V9 的值到对应行的 H 列:

function onEdit(e){

  if (e.range.getA1Notation() == "A2"){ //Only triggers when A2 is edited

    let sprsheet = SpreadsheetApp.getActiveSpreadsheet();
    let sheet1 = sprsheet.getSheetByName("Sheet1");
    let sheet2 = sprsheet.getSheetByName("Sheet2");

    var weekNumbers = sheet1.getRange("D1:D").getValues(); 
    var weekValues = sheet2.getRange("C3:V9").getDisplayValues();

    var currentWeek = e.range.getValue(); //New week number introduced in A2

    for (var i = 0; i < weekNumbers.length; i++){

      if (currentWeek == weekNumbers[i][0]){ //Only true when A2 equals a number in D

        sheet1.getRange(i+1,8,7,20).setValues(weekValues);
        break; //Stops the loop so it doesn't overwrite the following rows        
      }            
    }    
  }  
}

注意事项:

  • 只有在用户手动编辑工作表时才会触发 onEdit。如果 A2 单元格正在更新我的另一个脚本或工作表公式,它将不起作用。
  • 第一次必须从脚本编辑器运行代码才能接受权限(可能会出现错误,这是意料之中的)。之后,它不需要更多的交互并且会自动运行。

参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    相关资源
    最近更新 更多