您必须输入一些代码才能完成这项工作。 This link 提供了一个很好的示例,说明如何为您的工作表创建脚本。
您的脚本最重要的部分是您希望它在每次更改任何单元格中的工作表时运行。然后当它运行时,您可以检查哪个单元格已更改,然后他们确定该单元格是否在您有兴趣检查的区域中。考虑这样一张表:
设置好工作表后,转到“工具”菜单并选择“脚本编辑器”。从那里您将输入下面的代码。我给你的是一个例子,你必须改变它以满足你的需要。首先要了解的是function onEdit。这是一个特别命名的函数,每次对工作表进行更改时都会运行该函数。所以当你有
function onEdit(eventObj) {
}
然后,每次进行更改时(在用户键入 Enter 之后),您放在大括号内的任何内容都会执行。所以你的onEdit 函数看起来像这样:
function onEdit(eventObj) {
//--- you could set up a dynamic named range for this area to make it easier
var thisSheet = SpreadsheetApp.getActiveSheet();
var checkRange = thisSheet.getRange("B2:D5");
if (isInRange(checkRange, eventObj.range)) {
Logger.log('cell is in range');
var propertyCell = eventObj.range;
var timestampCell = thisSheet.getRange(propertyCell.getRow(), 5);
timestampCell.setValue(Utilities.formatDate(new Date(), "UTC+8", "MM-dd-yyyy hh:mm:ss"));
} else {
Logger.log('must be outside the range');
}
eventObj 是用户编辑和更改的单元格。因此,我们使用该单元格与我们要检查的区域进行比较。如果我们确定该单元格在该区域内,那么我们继续定义该单元格以保存时间戳,然后为其分配一个值。该值是格式化的日期和时间。
这里的重要部分是checkRange 变量,它被定义为所有属性的区域。因此,当onEdit 函数运行时,它会定义您正在检查的区域,然后调用isInRange 来查看被编辑的单元格是否在该区域内。这是函数:
function isInRange(checkRange, targetCell) {
Logger.log('checking isInRange');
//--- check the target cell's row and column against the given
// checkrange area and return True if the target cell is
// inside that range
var targetRow = targetCell.getRow();
if (targetRow < checkRange.getRow() || targetRow > checkRange.getLastRow()) return false;
Logger.log('not outside the rows');
var targetColumn = targetCell.getColumn();
if (targetColumn < checkRange.getColumn() || targetColumn > checkRange.getLastColumn()) return false;
Logger.log('not outside the columns');
//--- the target cell is in the range!
return true;
}
您的结果将如下所示:
所以现在,只需将这段代码复制并粘贴到您的脚本编辑器中即可:
function isInRange(checkRange, targetCell) {
Logger.log('checking isInRange');
//--- check the target cell's row and column against the given
// checkrange area and return True if the target cell is
// inside that range
var targetRow = targetCell.getRow();
if (targetRow < checkRange.getRow() || targetRow > checkRange.getLastRow()) return false;
Logger.log('not outside the rows');
var targetColumn = targetCell.getColumn();
if (targetColumn < checkRange.getColumn() || targetColumn > checkRange.getLastColumn()) return false;
Logger.log('not outside the columns');
//--- the target cell is in the range!
return true;
}
function onEdit(eventObj) {
//--- you could set up a dynamic named range for this area to make it easier
var thisSheet = SpreadsheetApp.getActiveSheet();
var checkRange = thisSheet.getRange("B2:D5");
if (isInRange(checkRange, eventObj.range)) {
Logger.log('cell is in range');
var propertyCell = eventObj.range;
var timestampCell = thisSheet.getRange(propertyCell.getRow(), 5);
timestampCell.setValue(Utilities.formatDate(new Date(), "UTC+8", "MM-dd-yyyy hh:mm:ss"));
} else {
Logger.log('must be outside the range');
}
}