试图创建一个检查房间钥匙是否已被占用的表。 Google spreadsheet link。
员工选择值或将其输入F2单元格。 G2单元格中的公式= IF(ISERROR(MATCH(F2,C4:C350,0)),“Brīvs”,“Paņemts”)测试是否使用了密钥。该公式贯穿C列并测试该值。
匹配时,它还会触发B4单元格中的公式。 B4中的公式为= IF(C4> 0,now(),“”)
问题是,每当员工选择/输入值时,MATCH函数就会触发now()函数,并在匹配搜索条件时覆盖最新时间。
有没有一种方法可以在不调用now()函数的情况下测试该值,从而使时间保持原样?在电子表格设置中限制重新计算次数无济于事,因为员工可能从第一次开始就没有正确输入该值。
试图通过“ =”将值放入另一个单元格到附近的单元格和= cell(contents,单元格坐标),但是这些引用返回到原始值,电子表格将重新计算所有引用。
答案 0 :(得分:0)
感谢cOde提供提示。
下面的代码已修改为满足以下需求。由于随后将添加工作表,因此将删除SHEETNAME变量。我还在末尾添加了isBlank选项,因此,如果单元格中没有值,则将删除时间戳。
/**
* Creates a Date Stamp if a column is edited.
*/
//CORE VARIABLES
// The column you want to check if something is entered.
var COLUMNTOCHECK = 3;
// Where you want the date time stamp offset from the input location. [row, column]
var DATETIMELOCATION = [0,-1];
function onEdit(e) {
SpreadsheetApp.getActiveSpreadsheet();
var ss= SpreadsheetApp.getActiveSheet();
var selectedCell = ss.getActiveCell();
//checks the column to ensure it is on the one we want to cause the date to appear.
if( selectedCell.getColumn() == COLUMNTOCHECK) {
var dateTimeCell = selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
dateTimeCell.setValue(new Date());
}
if (selectedCell.isBlank()) {
dateTimeCell.setValue("");
}
}