1

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

  • 根据经过的时间使用颜色对行进行条件格式设置:
    如果距离上次步行已超过 6 小时,
    则为红色,3-6 小时为黄色,
    如果步行 <3 小时前为绿色,则为绿色。
  • 自动对行进行排序,使走得最远的狗总是在列表的顶部,当它们走路时,它们会走到列表的底部。

就是我所在的地方。

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

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

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

问题2:假设我可以使上述工作,我该如何设置它以便表格在任何更改后自动排序(即当狗被遛并且条目被更新时)?

帮助?

4

2 回答 2

1

请试试:

问题 1

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

选择 A1 并应用自定义公式为

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

颜色为红色和范围 A:E

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

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

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

保存规则并关闭窗口。

问题 2

通过选择 ColumnA:E(可能必须首先删除工作表中的一些内容)和 Data > Pivot Table Report... 创建一个数据透视表,添加到Rows Add 字段Dog name(不显示总计),添加到Values Add字段Time since last walk和汇总方式:SUM。将工作表命名为 PT。

在你的另一张表(不是 PT)的 J2 中输入:

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

SO27737159 示例

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

于 2015-01-02T04:04:18.990 回答
0

对于自动排序,我在 stackoverflow 的其他地方找到了一个脚本,并出于我的目的对其进行了一些修改:

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 } );
  }
}
}
于 2015-01-02T08:49:55.423 回答