如何从电子表格中的两个日期插入SUM的结果
数据:
27/11/2013 1:31:00
00:15
=SUM(H3+F3)
显示SUM(H3 + F3)的结果。结果为27/11/2013 1:49:00
(24小时格式化)这里我有1&的起始脚本。 2。
function CreationDate(event){
//Script Sume Date
var actSht = event.source.getActiveSheet();
if (actSht.getName() == "sheet1"){
var activeCell = actSht.getActiveCell(); //Detec the ActiveCell
var column = activeCell.getColumn(); // Detect the Column of the ActiveCell
var colNums = [6]; //Coulmns, whose edit is considered
if(colNums.indexOf(column) == -1) return; //If column other than considered then return
var row = activeCell.getRow(); //Detect the ActiveRow
if(row < 3) return; //If header row then return
我尝试格式化此脚本Clic Here以对数据求和并将结果返回到dd / mm / yyyy hh:mm:ss但我没有幸运。
非常重要的是,这个公式尽快运行,因为我使用的是安排对全国各地的许多ISP的重要呼叫。
我尝试使用=arrayformula(sum(h3+f3))
但是没有用。我需要一个脚本,因为我一直在添加新的行。
感谢您的帮助。
最诚挚的问候,
答案 0 :(得分:2)
Adam的公式的单行版本,例如第3行,是:
=IF(ISNUMBER(H3)*ISNUMBER(F3);H3+F3;IFERROR(1/0))
由于您担心用户可能会损坏公式,因此您可以使用onEdit()触发器函数来确保在编辑F列中的数据时在列I中更新公式。
// When a value is entered in column F, set I = H + F, for rows >= 3.
function onEdit(e) {
if (!e) { // This block is for testing in debugger; always uses row 3
e = {};
e.range = SpreadsheetApp.getActiveSheet().getRange('F3');
e.value = e.range.getValue();
}
var row = e.range.getRow();
var col = e.range.getColumn();
if (col == 6 && row >= 3) {
// Insert single-cell version of Adam's formula into I
e.range.getSheet().getRange(row,9)
.setFormula('=IF(ISNUMBER(H'+row+')*ISNUMBER(F'+row+');H'+row+'+F'+row+';IFERROR(1/0))');
}
}
在公式中插入正确的行号的另一种方法是使用正则表达式替换:
...
// Insert single-cell version of Adam's formula into I
var rowTag = new RegExp('%ROW%','g');
var formula = '=IF(ISNUMBER(H%ROW%)*ISNUMBER(F%ROW%);H%ROW%+F%ROW%;IFERROR(1/0))'
.replace(rowTag,row);
e.range.getSheet().getRange(row,9).setFormula(formula);
...