使用带条件格式的 NOW() 计算经过时间

Calculate elapsed time using NOW() with conditional formatting

我正在尝试为当地狗收容所的志愿者设立一个 Google Sheet。我们的想法是拥有一个自动更新的电子表格,以两种方式一目了然地显示哪些狗确实需要遛:

Here's我所在的位置。

问题 1:我正在尝试使用 NOW() 函数(return当前日期和时间)计算经过的时间,减去最后一次步行的时间。问题是,如果您只输入时间,Google 显然会假定日期是 12/30/1899。因此,如果我输入 8:00 am,并且基于 NOW() 的当前时间是 4:00 pm,而不是 returning 8:00 hours,它计算的持续时间为 10,000,000+从 1899 年 12 月 30 日 8:00 上午到当前日期和时间已经过去的小时数。 (讨论过类似的问题here)。

如果我将输出单元格保留为 HH:MM 格式,它最初看起来不错,因为它只是 return HH:MM 为 8:00,但是我不能使用它,因为这样条件格式将不起作用 - 它实际上仍在计算自 1899 年以来的 10,000,000 小时。所以我无法为 red/green/yellow 设置持续时间值,因为所有输出值都会缓慢增加每天我们都离 1899 越来越远,这意味着我必须每天重新设置范围。

显然,我可以通过始终包括时间 日期来解决这个问题,但我的想法是拥有一个防白痴的电子表格,以便任何志愿者都可以使用它只是加上他们遛狗的时间。如果他们也必须输入日期,那将不起作用。

问题 2:假设我可以让上面的工作正常,我如何设置它以便 table 在任何更改后自动排序(即当一个dog walked and the entry gets updated)?

帮忙?

请尝试:

问题 1

绿色很简单,只需使用标准填充方式格式化所有数据(CF 将在适用的情况下覆盖它)。

Select A1 并应用 自定义公式是 of:

=and($D1<>"",timevalue(now())>$D1+6/24)

红色和范围 A:E

重复(这两个的顺序很重要):

=and($D1<>"",timevalue(now())>$D1+3/24)  

颜色为黄色,范围为 A:E。

保存规则并关闭 window。

问题 2

通过选择 ColumnA:E 创建一个 pivot table(可能必须首先删除 sheet 中低端的一些内容)和 Data > Pivot Table 报告...,向 Rows 添加字段 Dog name(不显示总计),向 Values 添加字段 Time since last walk 和总结 by:SUM。将 sheet PT 命名为

在你的另一个 sheet(不是 PT)的 J2 中输入:

=query(PT!A:B, "Select * order by B desc ")  

可能值得注意的是,如果没有白天部分,可能会出现时间跨度午夜的问题 - 如果您有失眠的步行者?!

对于自动排序,我在 Whosebug 的其他地方找到了一个脚本,并根据我的目的对其稍作修改:

function onEdit(event){

  var sheet = SpreadsheetApp.getActiveSheet();
  if(sheet.getName()=='Sheet1'){
  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 4;
  var tableRange = "a2:f91";

  if(editedCell.getColumn() == columnToSortBy){   
    var range = sheet.getRange(tableRange);
    range.sort( { column : columnToSortBy, ascending: true } );
  }
}
}