我有一个每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中,下面的行被转换为带有它们的向下公式。 有办法解决我的问题吗?也许一个脚本可以重新复制第一行中的公式(未删除的公式)?
谢谢
答案 0 :(得分:0)
复制公式所引用的单元格中的值 - 向上,向下或任何适当的值。然后用新数据覆盖它们。这将使您不必更换公式,这将更加繁琐。