如何在其他列填满时自动在一列中设置日期

时间:2018-01-01 19:56:39

标签: google-sheets

我有专栏。一个具有日期字段,另一个具有值(即成本)。我们可以调用第一列A和第二列B.我想在每个成本设置时注册日期。这意味着,当在B列中设置了值时,必须使用当前日期自动填充A列。

我的第一个想法是使用today()但是每次打开文档时此函数都会更新值。这意味着A列的所有值始终具有当前日期。

我想知道是否有可能第一次使用today()。因此我尝试过这样的事情:

if(AND(len(A1)=0,len(B1)>0), today(), "")

但是日期仍然更新为当前日期。

我的第二种方法是在单元格中设置today(),并在填充B列时尝试复制A列中的值。问题是我需要复制单元格的内容,而不是公式。在这种情况下我不能使用Paste special -> paste values only,因为是手动交互。在谷歌中搜索一下我发现this link建议此操作复制值而不是公式:

数据 - >验证:

  1. 细胞范围:Sheet1!C2
  2. 标准:列表中的项目
  3. 从范围创建列表... Sheet1!E2
  4. 这不是一个糟糕的方法,但我仍然需要在下拉列表中选择范围。它未自动选中。我们在这里有一个截图:

    No default value

    有更好的方法来达到我的目的吗?或者我需要创建一个片段吗?

1 个答案:

答案 0 :(得分:0)

您可以使用谷歌应用程序脚本onEdit。如果编辑了B列,它将用A填充日期。

function onEdit(e) {
  var sheet=e.source.getSheetName()
 if( sheet == "Sheet1" ) { //checks that we're on the correct sheet 
  var column = e.range.getSheet().getActiveCell().getColumn();
   if( column == 2 ) { //checks the column
      var newCell = e.range.getSheet().getActiveCell().offset(0,-1);//get column A of active row
      if( newCell.getValue() === '' ){ //If A is empty?
         var d = new Date();// d is now a date object
         newCell.setValue(d)}
      else{return}
      }}