函数最后修改date的单元格

我有一个用VBA编写的函数来做我想做的事情(参见下面的注意:我没有自己写这个函数)

我想要的是一个函数,例如“= LastModifiedDateOf(CELL)”,其中CELL是一个参数,表示我想要监视的单元格。 如果此类单元格的值发生更改,则包含该函数的单元格将其值更新为当前date。

最终,我想要一个用谷歌表单编写的function,但是我不明白这个function是如何工作的。

任何人都可以做一个或两个:1)解释下面的函数发生了什么,2)写一个函数在googlescripts(JS)做同样的事情?

Public Function Lastmodified(c As Range) Lastmodified = Now() End Function 

1)解释function发生了什么

电子表格单元格内容仅在其引用内容更改时才会重新计算。 当你仔细想一想,这对于效率是有意义的:当一个参考值(也就是参数)没有改变的时候,为一个单元格计算一个新值会浪费计算机资源…我们只是结束了相同的价值。

你提供的VBA函数的神奇之处在于包含它的单元格只有在被引用的单元格被更改时才会被重新计算。 这是在电子表格的控制之下,并且完全独立于脚本本身。

Google表格中展示的行为也是相同的。 在这两种情况下,监视单元的function并不重要 – 函数只是在调用时返回当前时间,这应该是在单元格值发生变化的时候。

但是,函数被调用还有其他原因。 在Excel中,您可以手动触发电子表格重新计算,并且可以使用当前时间将该函数的输出更新到电子表格中的任何位置。 同样,在Google表格中,只要您加载电子表格,就可以触发重新计算。

2)在googlescripts(js)中写一个函数来做同样的事情

 /** * Return the time that the referenced cell or range was last changed. * Initial use shows current time. * * @param {Sheet3!B32} reference Cell or range to monitor. * @returns The time the reference was last changed. * @customfunction */ function lastModified( reference ) { // Surprise - we don't actually care what has changed! return( new Date() ); } 

截图

在这个片段中,如果A1单元格被修改,单元格A2会自动更新修改date。

 function onEdit(e) { if (e.range.getA1Notation() === "A1") { e.source.getRange("A2").setValue(new Date()); } }