我想创建一列,该单元格的值将在上次修改该行时自动设置为该列。这可能吗?我该怎么做/我该使用什么选项进行设置? (手指交叉)
我们有很多人在编辑一张大纸。我们可以看到修订历史记录,但是如果我们也有一列“最近更新”的日期,那就更好了。
#1 楼
您可以尝试添加Google Apps脚本来捕获单元格的编辑时间,并为其他单元格添加时间戳。这是与之前类似的答案:Google Spreadsheet Timestamp?
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
var r = s.getActiveCell();
if( r.getColumn() == 13 ) { //checks the column
var nextCell = r.offset(0, 1);
if( nextCell.getValue() === '' ) //is empty?
var time = new Date();
time = Utilities.formatDate(time, "GMT", "HH:mm:ss");
nextCell.setValue(time);
};
};
}
评论
看起来不错,我会尝试一下
– cwd
2012年10月17日19:18
请尝试我对Google Sheets HTML Service侧边栏的回答,以所有者身份运行代码
–丹尼尔
16-02-26 at 1:29
#2 楼
每当行中的单元格更改时,公式都会重新计算。等式中带有“ x”的元素保证了错误。作为回报,返回日期。评论
这是一个有趣的克鲁格。
–ale
16-10-14在21:55
我见过的最漂亮的解决方案:)
– mafonya
17年4月6日在19:58
据我所知,这实际上是行不通的。需要明确的是,它可以工作,但不会针对特定行进行更新。当我把它放进多行中,然后在工作表上的任何地方进行编辑时,所有行都将重新计算和更新。
– nhgrif
17年5月18日在23:23
哇!它为我工作。这是一个简化的版本:= iferror(SUM(A2:O2)+“ x”,today())并拖动它会自动更新行号。
–伊利亚·埃夫多基莫夫(Ilya Evdokimov)
17-10-5在5:58
是的,无论iferror中的单元如何,它都会用相同的值更新所有行。
– Joshua F. Rountree
20年1月23日在13:37
#3 楼
这是我的脚本,在此信息的最后一栏中输入:插入到单元格中(在最后一个单元格中为您修改的行的lastcolumn)-日期格林尼治标准时间-3,如果您希望将其放置在其他TZ中,只需为您的并发时区修改-3。如果要将日期自动放入默认的TZ,只需进行以下修改:
var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
to
var date = Utilities.formatDate(new Date());
向修改它的Cell + User插入注释。
更新内容时会显示一个弹出窗口。仅对ActiveUser出现。
function onEdit(event)
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var actSht = event.source.getActiveSheet();
var actRng = event.source.getActiveRange();
var index = actRng.getRowIndex();
var dateCol = actSht.getLastColumn();
var lastCell = actSht.getRange(index,dateCol);
var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
lastCell.setValue(date);
lastCell.setComment("Ultima Modificacion: " + actRng.getA1Notation() +' por '+Session.getActiveUser());
ss.toast('Ultima Modificacion = '+ actRng.getA1Notation()+' por '+Session.getActiveUser());
}
#4 楼
我创建了一个函数,该函数在修改引用的单元格时会写入一个新的Date。在这种情况下,单元格的值为TRUE或FALSE,但是您可以将其编辑为任何值。function WhenUpdated(cell1) {
if(cell1){
return new Date();
}
else return null;
}
#5 楼
这是一个使用标题而不是对列号进行硬编码并使用自定义时区的列的版本: UTC区域。#6 楼
只需在一个单元格中键入“最新更新:”,然后在其旁边的单元格中键入“ = now()”!那应该做的!评论
这仅适用于每个单元,不适用于问题中所述的每一行
– 1owk3y
16-4-26的0:42
评论
你有没有尝试过?如果可行,请进行标记,请参阅webapps.stackexchange.com/faq#howtoask。