【发布时间】:2020-09-30 10:00:49
【问题描述】:
我有一个包含多列的谷歌表,其中一列是日期(它是 F 列,从最旧到最新排序),另一列 (G) 是持续时间值。每当三个持续时间的组合超过 10 小时时,我就制定了一个条件,采用相应的组合并将组合中最早的日期作为对另一个程序的参考。这个组合应该是最新的(我的意思是日期)。我试过的代码是
function calculation(){
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheetByName("10017135ASR");
var lastRow = sheet.getLastRow();
var time = sheet.getRange('G1:G'+lastRow).getValues();
var cell = sheet.getRange('F1:F'+lastRow).getValues();
var range1 = sheet.getRange('H1:H'+lastRow).setValues(time).setNumberFormat('[hh]:mm');
var refer = sheet.getRange('N2').setValue("10:00").setNumberFormat("[hh]:mm");
var refer1= refer.getValue();
var range = range1.getValues();
var time = sheet.getRange('H1:H');
time.setNumberFormat('[hh]:mm');
sheet.getRange('I2:I'+lastRow).setValue('0').setNumberFormat('[hh]:mm');
var one= sheet.getRange('H'+(lastRow)).getValue();
sheet.getRange('I'+lastRow).setValue(one).setNumberFormat('[hh]:mm');
var two = sheet.getRange('H'+(lastRow-1)).getValue();
sheet.getRange('I'+(lastRow-1)).setValue(two).setNumberFormat('[hh]:mm');
loop1:
for (var i = lastRow-3; i>0; i--){
var value1 = range[i][0];
var V2 = sheet.getRange('K'+lastRow).setValue(value1).setNumberFormat("[hh]:mm");
var L2 = sheet.getRange('J'+lastRow).setFormula("=LARGE(I2:I,1)").setNumberFormat('[hh]:mm');
var L3= sheet.getRange('J'+(lastRow-1)).setFormula("=LARGE(I2:I,2)").setNumberFormat('[hh]:mm');
var sum = sheet.getRange('M2').setFormula("=SUM(J2:J)").setNumberFormat("[hh]:mm");
var vB= sum.getValue();
var V1 = V2.getValue();
var sum2 = vB + V1;
if((vB)>= refer1){
sheet.getRange('L2').setValue(sum2).setNumberFormat('[hh]:mm');
var da=sheet.getRange('F'+(i+2)).getValue();
sheet.getRange('N2').setValue(da).setNumberFormat('DD-mm-yyyy');
break loop1;
}
else {
sheet.getRange('I'+(i+1)).setValue(value1).setNumberFormat('[hh]:mm');
}
}
}
这里我没有得到输出,循环在第一行结束,即使没有必要去第一行。因为所需的输出在第 30 行并且相应的日期是 2020 年 7 月 30 日。 工作表如下所示
【问题讨论】:
-
期望的输出是什么?您要检索持续时间大于 10 小时的 first 三单元组合的最早日期和总持续时间?你想把这些数据写到哪里?
-
@lamblichus 我需要 10 小时或更长时间的最新组合,并且在该组合中最旧的日期。在上面的示例中,组合是 3 30 ,3 ,4 小时,日期是 30/7/2020
-
我了解您需要 10 小时或更长时间的最新组合。我的意思是问你需要什么数据。三个单元格的持续时间分别是最旧的日期?或者可能是总持续时间(三个单元格的总和?)。你想用这些数据做什么?将其写入其他单元格?
-
或者您只是问如何检索这些数据,而无需将其写回电子表格?
-
@lamblichus 正是我需要这三个单元格分别在三个位置的持续时间以及在另一个位置和相应日期的总和。所有这些结果都在同一张纸上。我有近 120 张类似的工作表,我正在将所有这些结果用于另一个程序。
标签: google-apps-script google-sheets