我在当地的赛车俱乐部和我做时机。我们的计时装置将时间输出为 Minutes:Seconds.Milliseconds (MM:SS.MS),并希望输入该数字,但让该单元格自动将其转换为< strong> Seconds.Milliseconds (ss.ms)格式,因此我可以轻松地进行一些计算。我还想继续输入ss.ms格式。
示例:
工作表“时间”,列E,F,G,H和任何行都是我一直输入的位置。因此,如果我在单元格E3中保持1:24.78的时间,我希望它在同一单元格中转换为84.78。
我能够创建一个将MM:SS.MS转换为SS.MS的函数,但是我希望有一个定义的区域,当我在一个单元格中输入MM:SS.MS时它会自动转换onEdit在同一个单元格中。
function MTS() {
var value = arguments[0].split(".");
var time = value[0].split(":");
var ms = parseInt(value[1],10);
var seconds = parseInt(time[time.length-1],10);
var minutes = parseInt(time[time.length-2],10);
var hours = parseInt(time[time.length-3],10);
var output = (minutes * 60) + seconds + '.' + ms;
return output;
};
以下是相关Google电子表格的链接:
https://docs.google.com/spreadsheet/ccc?key=0AoFFjAyGmvrydGQ5VVd6cXJWTjJMZkhsRkc3bFplOXc&usp=sharing
答案 0 :(得分:0)
在MTS(e)
内拨打onEdit
,就像代码现在一样。使用传递的现有电子表格对象(由e
表示)将值设置回转换后编辑的相同范围。 e.range.setValue(output);
答案 1 :(得分:0)
对于可能偶然发现这种情况的人,下面是 Bryan P 提出来解决我发布的确切问题。
function onEdit(e) {
if ( e.range.getValue() &&
/^(5|6|7|8)$/.test(e.range.columnStart) &&
e.range.columnStart == e.range.columnEnd &&
e.range.rowStart == e.range.rowEnd ) {
MinutesToSeconds(e);
}
};
function MinutesToSeconds(e) {
var value = e.range.getValue().split(".");
var time = value[0].split(":");
var ms = parseInt(value[1],10);
var seconds = parseInt(time[time.length-1],10);
var minutes = parseInt(time[time.length-2],10);
var output = (minutes * 60) + seconds + '.' + ms;
e.range.setValue(output);
return;
};
这只能转换为分钟,您可以在MinutesToSeconds()函数中为“hours”添加另一个变量。然后在变量“output”中更改数学。
var hours = parseInt(time[time.length-3],10);
如果有人知道如何进行数小时的数学计算,即使没有数小时的数据,也可随意发布。
因为如果我这样做
var output = (hours * 60) * (minutes * 60) + seconds + '.' + ms;
并且没有和“小时”中的数据产生NaN错误。