【问题标题】:Google sheets script for copying data and pasting in another sheet on the same row as a specific numer用于复制数据并粘贴到与特定数字同一行的另一张工作表中的 Google 工作表脚本
【发布时间】:2020-10-14 12:34:07
【问题描述】:

我有以下数据:

  1. [来源] 表 1(报价生成器):

    • 工作表 1,单元格 A4:用于选择工作参考的下拉菜单
    • 表 1,单元格 K4>Q4:= 从谷歌地图和计算中提取的数字,取决于 A4 菜单选择
  2. [目的地] 表 2(报价日志):

    • 表 2,B 列:引用参考文献
    • 工作表 2,列 V>AB:来自工作表 1 的行程数据和计算

我正在寻找一个脚本,该脚本将复制工作表 1 中的数据,单元格 K4:Q4,并将它们粘贴到工作表 2,列 V:AB 与工作表 1 上的选定作业参考“100001”位于同一行, 单元格 A4,也将出现在工作表 2,B 列中

任何帮助将不胜感激 TIA

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    您指定的数据范围大于您要放入数据的范围,因此我在代码中缩小了源范围。试试这个。

    function copyrow() {
      var ss = SpreadsheetApp.getActive();
      var source = SpreadsheetApp.openById('SheetID');
      var dest = SpreadsheetApp.openById('SheetID');
      var sourcerange = source.getRange('B4:H4');
      var sourcerangevalue = sourcerange.getValues();
      var checkval = source.getRange('A4').getValue();
      var lastrow = dest.getLastRow();
      var destrange = dest.getRange('B1:B');
      var destrangevalue = destrange.getValues();
      for (i = 1; i <= lastrow; i++) {
        if (checkval == destrangevalue[i]) {
          dest.getRange('A15').setValue(destrangevalue[i])
          dest.getRange("V" + i + ":AB" + i).setValues(sourcerangevalue)
        };
      };
    };

    【讨论】:

      【解决方案2】:
      function myFunction() {
        // get active spreadsheet
        var ss   = SpreadsheetApp.getActiveSpreadsheet();
        
        // get data from Sheet1
        var s    = ss.getSheetByName("Sheet1");
        var cel  = s.getRange("A4").getValue();
        var data = s.getRange("K4:Q4").getValues();
      
        // get to Sheet2 and get values from column 'B'
        var s    = ss.getSheetByName("Sheet2");
        var col  = s.getRange("B1:B").getValues();
      
        // find the row number in columnn B that contain the value
        var row  = col.flat().findIndex( c => c == cel ) + 1;
      
        // put the 'data' into the cells of this row
        if (row) s.getRange("V" + row + ":AB" + row).setValues(data);
      }
      

      更新版本:

      function onEdit(e) {
          if (e.range.getA1Notation() !== "Q6") return;
      
          var ss   = SpreadsheetApp.getActiveSpreadsheet();
          
          var s    = ss.getSheetByName("Sheet1");
          var cel  = s.getRange("A4").getValue();
          var data = s.getRange("K4:Q4").getValues();
      
          var s    = ss.getSheetByName("Sheet2");
          var col  = s.getRange("B1:B").getValues();
          var row  = col.findIndex(c => c[0] == cel) + 1;
      
          if (!row) return;
          s.getRange("V" + row + ":AB" + row).setValues(data);
          
          var s    = ss.getSheetByName("Sheet1");
          ss.getRange("A1").clear();
          ss.getRange("F5").clear();  
      }
      

      【讨论】:

      • 谢谢尤里,这段代码完成了这项工作有没有办法扩展这段代码,以便可以通过编辑工作表 1 上的单元格 Q6 (DropDown) 来触发它,然后在运行复制代码后清除其他 2 个单元格中的值(A1 和 F5)再次感谢您的帮助,非常感谢
      • 简单易行。查看脚本的更新版本。
      猜你喜欢
      • 2023-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多