【问题标题】:How to set automattically date in one column when other column has been filled up如何在另一列已填满时自动在一列中设置日期
【发布时间】:2018-01-02 05:16:29
【问题描述】:

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

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

我想知道是否可以只在第一次使用today()。因此,我尝试做类似的事情:

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

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

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

数据 -> 验证:

  1. 单元格范围:Sheet1!C2
  2. 标准:列表中的项目
  3. 从范围创建列表... Sheet1!E2

这不是一个坏方法,但我仍然需要在下拉列表中选择范围。它不是自动选择的。这里有一个截图:

有更好的方法来实现我的目的吗?还是我需要创建一个sn-p?

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    您可以使用 google app 脚本 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}
          }}
    

    【讨论】:

    • 没有任何原生动作来达到这个目的吗?
    • 据我所知,您可以创建一个用户定义的函数并将其复制下来,但 onEdit 似乎更容易。
    • 您的解决方案很容易做到。只是我不希望自己编程!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2019-12-06
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    相关资源
    最近更新 更多