如果单元格在午夜之后更新,则返回昨天的日期

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

在谷歌表格文档中,我实现了一个脚本,其中工作表名称根据单元格 A10 中的内容进行更改。 这是脚本:

function onEdit() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var oldName = sheet.getName();
  var newName = sheet.getRange(1,10).getValue();
  if (newName.toString().length>0 && newName !== oldName) {
    sheet.setName(newName);
  }
}

在单元格 A10 中,我有公式 =concatenate(A1:A9)。 在 A1 中,我有公式 =day(today())。 A2 = 月(今天())。 A3 = 年(今天())。然后,接下来的单元格和 A9 中的一些静态文本是将触发文件名更改的输入。

这样,工作表名称会根据 A9 单元格内容更改的时间自动更改为当前的日、月、年。

我有3张床单,早上、下午、晚上各换一次。早上和下午的床单没有问题,但是晚上的床单,因为可以在午夜之前或之后更换,所以我想与其他两张床单在同一天使用,无论更换时间如何.

我已经在夜间工作表中的白天单元格中尝试过这个公式,但没有成功:

A1=if(day(today)='Afternoon'!A1; day(today()) ; day((today())-1))

有没有办法改进这个公式,或者我应该采取不同的方法?

谢谢!

google-sheets autocomplete filenames
1个回答
0
投票

晚间日值

=LET(now, NOW(),
   DAY(now-(MOD(now, 24)<12))) 
  • 如果时间在 12:00 PM(中午)之前,则减去 1 天。
  • 由于
    1 day=1
    1 hour=1/24
    MOD(x, 24)=12
    其中
    x=12:00 PM

单个日期字符串公式

正如 @Tedinoz 指出的那样,在没有日期的情况下称呼日期很容易出现日期、月份和年份的错误:

  • DAY("1/1/23")-1 ≠ DAY("1/1/23"-1)
  • MONTH("1/1/23") ≠ MONTH("1/1/23"-1)
  • YEAR("1/1/23")  ≠ YEAR("1/1/23"-1)

这三个工作表应各自使用一个公式来返回日期字符串。

晚上日期字符串

=LET(now, NOW(),
   TEXT(
     now-(MOD(now, 24)<12)), 
     "ddmmyyyy") 
  • 替换
    A1:A3
    中的三个公式。
  • 根据需要调整日期字符串格式。

上午/下午日期字符串

=TEXT(NOW(), "ddmmyyyy") 
  • 替换
    A1:A3
    中的三个公式。
  • 使用单一日期格式去除时间。
  • 根据需要调整日期字符串格式。
© www.soinside.com 2019 - 2024. All rights reserved.