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

问题描述 投票:0回答:1

我有专栏。一个具有日期字段,另一个具有值(即成本)。我们可以调用第一列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

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

No default value

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

google-sheets
1个回答
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}
      }}
© www.soinside.com 2019 - 2024. All rights reserved.