Google Sheet,在脚本保留公式中使用删除

时间:2017-05-30 22:40:32

标签: google-apps-script google-sheets

我有一个每10分钟运行一次的脚本,并在每次迭代时删除1行,以便在24小时图表中始终保留144行。它适用于没有公式的工作表,但其他3个工作表中的公式指的是第一个,当脚本运行时,它们不会做我期望的事情。这是脚本:

  var tableData = ss.getSheetByName("TableData");
  var rowsToKeep = 149;   
  var totalRows = tableData.getLastRow();
  var numToDelete = totalRows - rowsToKeep;
      if (numToDelete > 0)
       {
         tableData.deleteRows(6, numToDelete);        
}

  var chartData1 = ss.getSheetByName("ChartData1-15");
  var rowsToKeep1 = 146;   
  var totalRows1 = chartData1.getLastRow();
  var numToDelete1 = totalRows1 - rowsToKeep1;
      if (numToDelete1 > 0)
       {
         chartData1.deleteRows(3, numToDelete1);          
}


  var chartData2 = ss.getSheetByName("ChartData10-20");
  var rowsToKeep2 = 146;   
  var totalRows2 = chartData2.getLastRow();
  var numToDelete2 = totalRows2 - rowsToKeep2;
      if (numToDelete2 > 0)
       {
         chartData2.deleteRows(3, numToDelete2);          
}


  var chartData3 = ss.getSheetByName("ChartData15-64");
  var rowsToKeep3 = 146;   
  var totalRows3 = chartData3.getLastRow();
  var numToDelete3 = totalRows1 - rowsToKeep3;
      if (numToDelete3 > 0)
       {
         chartData3.deleteRows(3, numToDelete3);         
}

在行和列中重复的公式为:

  

= IF(TableData!B $ 3> = $ A $ 1,TableData!B5,"")   = IF(TableData!B $ 3> = $ A $ 1,TableData!B6,"")   = IF(TableData!B $ 3> = $ A $ 1,TableData!B7,"")

依此类推...... - 对于chartData1

  

= IF(和(TableData!B $ 3> = $ B $ 1,TableData!B $ 3< = $ A $ 1),TableData!B5,"")   = IF(和(TableData!B $ 3> = $ B $ 1,TableData!B $ 3< = $ A $ 1),TableData!B6,"")   = IF(和(TableData!B $ 3> = $ B $ 1,TableData!B $ 3< = $ A $ 1),TableData!B7,"")

依旧.... - for chartData2

  

= IF(TableData!B $ 3< = $ A $ 1,TableData!B5,"")   = IF(TableData!B $ 3< = $ A $ 1,TableData!B6,"")   = IF(TableData!B $ 3< = $ A $ 1,TableData!B7,"")

依此类推...... - 对于chartData3

会发生什么:在chartData1和3中,行变换= IF(TableData!B $ 3> = $ A $ 1,#REF!,""),就像缺少TableData中的引用一样,因为它被删除;在chartData2中,下面的行被转换为带有它们的向下公式。 有办法解决我的问题吗?也许一个脚本可以重新复制第一行中的公式(未删除的公式)?

谢谢

1 个答案:

答案 0 :(得分:0)

复制公式所引用的单元格中的值 - 向上,向下或任何适当的值。然后用新数据覆盖它们。这将使您不必更换公式,这将更加繁琐。