我有一个每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> = $ 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,“”)
等等.... - 对于chartData2
= IF(TableData!B $ 3 <= $ A $ 1,TableData!B5,“”)= IF(TableData!B $ 3 <= $ A $ 1,TableData!B6,“”)= IF(TableData!B $ 3 <= $ 1美元,TableData!B7,“”)
等等... - 对于chartData3
会发生什么:在chartData1和3中,行变换= IF(TableData!B $ 3> = $ A $ 1,#REF!,“”),就像丢失TableData中的引用一样,因为它被删除了;在chartData2中,下面的行被转换为带有它们的向下公式。有办法解决我的问题吗?也许一个脚本可以从第一行(未删除的那个)再次重新复制公式?
谢谢
复制公式所引用的单元格中的值 - 向上,向下或任何适当的值。然后用新数据覆盖它们。这将使您不必更换公式,这将更加繁琐。