对另一个与日期/时间有关的职位表示歉意。我还没有意识到这一点,所以欢迎任何评论。执行摘要:Excel可用于处理较短的运行时间(运动事件时间等),但工作表不能工作,因为您需要编写一个脚本来显示较小的时间,并且脚本会将一些东西拧紧,这样工作表就不再将单元格视为稍后手动更改时间的时间。
我需要的时间通常很短,大约几分钟,小数点数从秒到两位。我必须在这些时间做算术(通常只与另一个时间比较)。
我们现在把所有的东西都存储在Excel中,这很好。如果在范围内定义自定义显示格式,然后输入类似于2:43.02
的时间(2分钟,43.02秒),则单元格仍然包含时间,而Excel可以在这些时间上进行算术。
然后我上传Excel电子表格,并在工作表中打开它。没有内置格式扩展,就像在Excel中一样,所以我必须使用扩展函数将时间显示为2:43.02
(参见下面;函数调用setNumberFormat
)。在文档的新工作表版本中,Excel时间仍然是时间,比较工作,一切看起来都是正确的。
问题出在这里。只有在手动将新时间输入到工作表单元格之前,一切才能正常工作。例如,如果输入2:41.05
,单元格将不再包含时间对象,所有算术都会中断。所以,我不能用工作表来代替Excel。我必须把所有的东西都保存在Excel中,偶尔上传,保持工作表的版本为只读。
工作表中有一些魔力,它决定了单元格是否包含日期。如果我使用内置的时间格式,那么工作表就知道它是一个时间,如果时间是手动更改的话,它可以做算术运算。如果我使用下面的函数(从这里)更改时间格式,那么这种魔力就消失了,而且我无法手动更改时间。
function EditFormat() {
var oldname = SpreadsheetApp.getActiveRange().getNumberFormat();
var name = Browser.inputBox("Current format (blank = no change):\r\n"+ oldname);
SpreadsheetApp.getActiveRange().setNumberFormat((name=="")?oldname:name);
}
问:setNumberFormat
坏了吗?有没有更好的方法来做这一切?我能否在脚本中做一些其他的事情,保留单元格作为时间的神奇状态?还是我要回Excel?
谢谢。
发布于 2013-01-19 12:49:48
这是由于一个(可悲的是长期存在的)工作表错误,解析器在两个方面失败:
这两个点都适用于电子表格中的所有值,但是只有第二点适用于直接输入的值。因此,解决办法是通过一个公式输入:
=VALUE("0:2:43.02")
或者您可以有一个输入列,该输入列被格式化为纯文本,然后有一个显示列,该列类似地通过公式将时间值转换为时间值(此显示列将被自定义格式化)。或者,您可以有一个助手脚本,该脚本显示活动单元格的输入框,在该输入框中输入拆分时间,然后创建像上面这样的公式并在单元格中填充它(设置的数字格式也可以内置到此脚本中)。
我希望这些变通办法是不必要的。
https://stackoverflow.com/questions/14417665
复制