【问题标题】:Adding a row and copying the information from the original row for every day in a date range in Google Sheets在 Google 表格的某个日期范围内添加一行并从原始行复制信息
【发布时间】:2017-07-28 03:06:16
【问题描述】:

我有一个 Google 表格,其中转储了来自 Google 表单的信息。其中两列创建了一个日期范围,我希望工作表为该范围的每个日期自动创建一个新的信息行,并为创建的每一行从原始行复制所有其他信息。最后,范围内的每个日期都有自己的行,无论是 2 天还是 25 天,并且通过表单收集的所有信息每天都存在

Here is an example

【问题讨论】:

    标签: date google-sheets range


    【解决方案1】:

    这是一个可以为您解决问题的函数。运行后我的电子表格在下方。我只是将它附加到起始数据的底部。

    function convertDateRangetoRows()
    {
      var ss=SpreadsheetApp.getActive();
      var sht=ss.getActiveSheet();
      var rng=sht.getDataRange();
      var rngA=rng.getValues();
      var rngB=[];
      var day=86400000;
      rngB.push(rngA[0]);
      for(var i=1;i<rngA.length;i++)
      {
        rngB.push(rngA[i]);  
        if(rngA[i][0] && rngA[i][1] && rngA[i][0]!=rngA[i][1])
        {
          var dt0=new Date(rngA[i][0]);
          var dt1=new Date(rngA[i][1]);
          var days=(dt1.valueOf()-dt0.valueOf())/day;
          var dt=dt0.valueOf();
          for(j=0;j<days;j++)
          {
            dt+=day;
            rngB.push([Utilities.formatDate(new Date(dt), Session.getScriptTimeZone(), "MM/dd/yyyy"),'',rngA[i][2],rngA[i][3],rngA[i][4]]);
          }
        }
       var intermediate='nothing'; 
      }
      var rngb=sht.getRange(sht.getLastRow()+1,1,rngB.length,rngB[0].length);
      rngb.setValues(rngB);
     var end='the end is near';
    }
    

    【讨论】:

    • 感谢您的帮助。我想如果我提供一个样本表,我可以调整公式/函数/脚本以满足我的需要,但我仍然做错了什么。在我的实际工作表中,“旅行日期”是 C 列,“返回日期”是 G 列。我发现的另一个问题是,当新数据来自表单时,它会自动覆盖它正在使用的下一行。有没有办法将日期范围触发的行添加到电子表格的底部,从第 2000 行开始。我有另一张表正在对所有数据进行排序。再次感谢
    • 我需要查看数据以及您接下来想要什么的说明。您可能只是尝试转到另一个问题。请在完成后勾选此项,我将在下一个示例中为您提供帮助。
    • 我确实发布了另一个标题基本相同的帖子并链接了工作表的副本。感谢您的所有帮助。
    • 我找不到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多