时间计算公式

1679111214

评论

  • 保罗新来的
    保罗新来的 ✭✭✭✭✭✭

    @Charlene脑桥看起来你可能打错了列名(粗体):


    =((值(左(【结束时间】@row 2) +(值(右(【结束时间】@row 2)) / 60)) + ((日期)@row -[起始时间]@row) * 24)) - (VALUE(LEFT([起始时间]@row, 2) + (VALUE(RIGHT([起始时间]@row, 2)) / 60)))

    thinkspi.com

  • Leibel博士年代
    Leibel博士年代 ✭✭✭✭✭✭

    @L_123@Paul新来的

    感谢你关于使用Smartsheet存储的数字来提取时差的帖子。我以前从未听说过这个,受到这个想法的启发。

    我能够解析信息并分解Smartsheet如何存储信息。

    开始:

    (电子邮件保护)-(电子邮件保护)将返回带有部分日的小数的天数。

    每天有86400秒。如果除以1/86400,得到0.0000115740740740741。

    然而,Smartsheet仅适用于MAX 5小数,这就是为什么尝试乘和除由上述公式返回的数字来获得您的时间将不准确,因为它是四舍五入的。

    我解决这个问题的方法是将数字相乘以返回所有小数,而不仅仅是上面公式中显示的最大5个小数:

    =([时差]@row - ROUNDDOWN([时差]@row, 0)) * 100000000000000

    一旦我们得到了所有的完整数字,我们就可以把它除以1157407407.40741来得到一天的秒数。

    然后,您可以使用上面的返回值来返回一天中的小时、分钟和秒:

    小时:

    =INT([总秒数]@row / 3600)(返回小时数)。

    分钟:

    =INT(MOD([Total Seconds]@row, 3600) / 60)

    秒:

    =MOD([总秒数]@行,60)


    一个完全格式化的列的例子是:

    ="D:" + INT([时差]@行)+ " H:" + INT([总秒数]@行/ 3600)+ " M:" + INT(MOD([总秒数]@行,3600)/ 60)+ " S:" + MOD([总秒数]@行,60)


    请让我知道,如果你发现以上是准确的。

    谢谢你!

  • 保罗新来的
    保罗新来的 ✭✭✭✭✭✭

    @Leibel Shuchat你在时差栏里填了什么?只是两个单元格的基本减法?


    我也想知道,如果两者之间存在相当大的差距,中国会作何反应。我不记得确切的数字,但(除了数字的数量)也有一个“最高数字”类型的限制。如果其中一个计算超过了这个数字怎么办?我要去挖掘一下,看看能不能再找到它。

    thinkspi.com

  • 保罗新来的
    保罗新来的 ✭✭✭✭✭✭

    @Leibel Shuchat我在#OVERFLOW错误帮助下发现了这个:


    对于数值,范围是-9007199254740992到9007199254740992。


    我还没有完全理解你的解决方案的细节,所以可能是我误解了一些事情,或者担心一些不符合逻辑的事情(比如在达到极限之前的数百万天)。

    thinkspi.com

  • Leibel博士年代
    Leibel博士年代 ✭✭✭✭✭✭

    @Paul新来的

    是的,时差列是两个单元格的相减。

    对于溢出,我们只是将差值(部分天数)的小数乘以100000000000000。这样就不会出现#OVERFLOW错误。

  • 保罗新来的
    保罗新来的 ✭✭✭✭✭✭

    @Leibel Shuchat我也是这么想的,但不是百分之百确定。谢谢你的确认。


    @L_123看看吧。当使用系统生成的日期/时间戳时,我们现在有了一个简单得多的解决方案。

    thinkspi.com

  • L_123
    L_123 ✭✭✭✭✭✭
    编辑11/18/21

    @Paul新来的&@Leibel Shuchat


    这是辉煌的。我看到之前提到的比例,觉得是不对的,但是没有时间去核实。四舍五入很有意义。谢谢你!

  • Leibel博士年代
    Leibel博士年代 ✭✭✭✭✭✭

    @Paul新来的

    @L_123

    似乎毫秒也被存储起来了。不用太复杂,如果你把秒的结果相乘,你就可以把这个数字输入excel或类似的软件,然后计算毫秒。

    由于十进制和OVERFLOW限制,我无法在Smartsheet中找到这样做的方法。

    促使我研究这个问题的原因是,我注意到有些第二列有时显示60秒(公式:=MOD([Total seconds]@row, 60))。这是因为实际数字略低于60(因此毫秒),但由于十进制限制而显示为60…

  • 你好,

    我对SmartSheet和公式有点陌生,有一个项目,我真的需要找到每个出席错误所花费的时间,我想知道是否有人可以帮助。


  • @Paul Newcome,我试过用这个公式

    =价值(中期((电子邮件保护), find (" ",(电子邮件保护)) + 1, find (":",(电子邮件保护)) - (find (" ",(电子邮件保护)(1) + if (1) + if (1)(电子邮件保护), find (" ",(电子邮件保护)) + 1, find (":",(电子邮件保护)) - (find (" ",(电子邮件保护)(1)) <> 12, if (find (" p ",(电子邮件保护)) > 0, 0), if (find (" a ",(电子邮件保护)) > 0, -12)

    将创建的列的12小时格式转换为24小时格式。一旦我关闭值字符串上的圆括号,它就不允许我加上+ IF。它只是打破了公式。

    在下面,当我关闭初始字符串时,我做得很好。

    image.png

    只要我加上+并输入if,它就不允许我选择if公式。

    image.png

    任何人都可以帮助我度过这个难关,或者如果2021年12月有更好的事情,请为了我的理智而帮助我……

  • 保罗新来的
    保罗新来的 ✭✭✭✭✭✭

    @Ted桑伯恩试着从末尾去掉一个右括号。

    thinkspi.com

  • screenshot_20220215 _excel.jpg——035405

    我有一个叫做SHUTTLE MOVES的运行日志。

    每天都有无数的车手加入进来。

    Created字段是一个自动日期字段。(它必须是自动的,不能更改为手动输入的日期或时间字段)。当用户在智能表格中输入他们的穿梭动作时,它会自动打上时间戳。(本质上,这是一个唯一的字段,除非两个司机恰好在同一时刻按下他们的提交按钮,这还没有发生)。

    车手也在每个条目上输入他/她的名字。

    在我的截图中,我使用了一个过滤器,只查看今天所有驱动程序的条目。然而,在工作表中,它是一个运行日志,所有日期/时间都有数千个条目。(我不知道一天会有多少条目,所以我不能在函数中引用特定的单元格地址。它必须是灵活的引用)。

    我想告诉smartsheet查看Created列,确定今天的第一个条目,确定今天的最后一个条目,并计算每个驾驶员的第一个和最后一个条目之间的小时数。

    我真的不知道如何做到这一点与同一单元格内捕获的日期和时间。

    也许我需要将单元格的内容转换为数字并找到差异?我真的不确定。

    谢谢你的帮助。

  • GarrettDyer
    GarrettDyer ✭✭✭

    @Paul新来的我一直在阅读多个线程,仍然有一些麻烦,我的时间计算。你能看一下我的单子吗在这里看看有什么你能帮我的吗?


    由于这是一个严格的计算表,我可以添加辅助列来进行计算。

  • 保罗新来的
    保罗新来的 ✭✭✭✭✭✭

    @GarrettDyer你能否提供更多细节?这张床单是怎么起作用的?你目前使用的公式是什么?这张床单是怎么起作用的?

    thinkspi.com

  • GarrettDyer
    GarrettDyer ✭✭✭

    @Paul新来的链接到表格有用吗?我在表格里有详细说明,还有解释的公式。我认为这可能比在评论中输入更容易。如果没有,请告诉我,我会尝试重新发布链接。