【问题标题】:How to convert Jira elapsed time format into just minutes in an Excel formula?如何在 Excel 公式中将 Jira 已用时间格式转换为几分钟?
【发布时间】:2018-04-18 09:04:50
【问题描述】:

我收到了一个 Excel 电子表格,其中有一个“所用时间”列,其值采用标准 Jira 时间跟踪格式,分为天、小时和分钟:

Time Spent (Jira format)
------------------------
1d 7h 30m
30m
20d 5m

它无法重新生成 - 它来自特定的时间点,并且数字已经移动。我需要将这些时间转换为分钟数 - 例如上面的结果应该是:

Time Spent (minutes)
--------------------
1890
30
28805

这一切都需要在 Excel 中进行,理想情况下只使用适用于所有此类时间跨度的公式 - 如果可能,更愿意避免使用 VBA。

【问题讨论】:

    标签: excel excel-formula jira time-format elapsedtime


    【解决方案1】:

    把它分解成几个步骤。
    几天?如果它包含“d”,那么我们想要“d”左边的字符:(乘以 24 小时或 1440 分钟)

    IF(ISERROR(FIND("d",A1)),0,LEFT(A1,FIND("d",A1)-1))
    

    多少小时?好吧,如果它包含“h”,那么我们想要“h”左边的数字。如果我们抓住左边的 2 个字符,那将是一个 2 位数字,或者是一个空格和一个 1 位数字。然后我们可以使用TRIM 去除多余的空格:(同样,乘以 60 分钟)

    IF(ISERROR(FIND("h",A1)),0,TRIM(MID(A1,FIND("h",A1)-2,2)))
    

    多少分钟?这与 Hours 基本相同,但查找的是“m”而不是“h”——也不需要转换它。

    IF(ISERROR(FIND("m",A1)),0,TRIM(MID(A1,FIND("m",A1)-2,2)))
    

    将所有内容放在一起,这次包括转换为分钟:

    =IF(ISERROR(FIND("d",A1)),0,1440*LEFT(A1,FIND("d",A1)-1))+IF(ISERROR(FIND("h",A1)),0,60*TRIM(MID(A1,FIND("h",A1)-2,2)))+IF(ISERROR(FIND("m",A1)),0,TRIM(MID(A1,FIND("m",A1)-2,2)))
    

    {EDIT} 更新代码以防字符串以个位数的分钟/小时开头:

    =IF(ISERROR(FIND("d",A1)),0,1440*LEFT(A1,FIND("d",A1)-1))+IF(ISERROR(FIND("h",A1)),0,60*TRIM(MID(" "&A1,FIND("h",A1)-1,2)))+IF(ISERROR(FIND("m",A1)),0,TRIM(MID(" "&A1,FIND("m",A1)-1,2)))
    

    【讨论】:

    • 感谢您的回答。刚刚对此进行了测试,当小时或分钟只有一个数字时,它当前正在返回#VALUE! - 例如。对于“7h 30m”。猜猜如果减去 2 返回 0 或负数,可能需要一些 MAX(..., 1)
    • 糟糕 - 对此感到抱歉。是的,就是这样,或者在你正在处理的字符串前面加上一个空格,然后只减去 1。
    • 不错的教程材料(+1)
    • @Chronocidal 感谢您的更新 - 现在似乎运行良好。
    【解决方案2】:

    当您的数据从 A3 开始在 Col:A 上时,您可以使用此公式并向下复制:

    =IFERROR(MID($A3,1,FIND("d",$A3)-1),0)*24*60+IFERROR(MID($A3,FIND("h",$A3)-IF(FIND("h",$A3)<3,1,2),IF(FIND("h",$A3)<3,1,2))*60,0)+IFERROR(MID($A3,FIND("m",$A3)-IF(FIND("m",$A3)<3,1,2),IF(FIND("m",$A3)<3,1,2)),0)
    

    【讨论】:

    • 感谢您的回答。刚刚对此进行了测试,目前结果似乎不包括小时数。例如。应用于“7h 30m”的公式为 30。
    • @SteveChambers 这与我的原始代码(以一位数小时/分钟开头)相同的问题,除了返回0 小时而不是#VALUE! 小时。在“7m”上测试也会返回0
    • 我添加了一个额外的条件并编辑了答案。很抱歉给您带来不便。
    • 感谢您的更新 - 现在似乎运行良好。
    【解决方案3】:

    我只需要编写一个公式来解析来自 JIRA 估计值的“w”、“d”、“h”分隔符。例如列中的“4w 2d 3h”。结果是这样的:

    =if(C2 <> "", SUM(SUMIF(REGEXEXTRACT(C2, ".*([\d]+)w.*") * 40, "<>#N/A"), SUMIF(REGEXEXTRACT(C2, ".*([\d]+)d.*") * 8, "<>#N/A"), SUMIF(REGEXEXTRACT(C2, ".*([\d]+)h.*"), "<>#N/A")), "")
    

    你最好不要看得太深。这使用正则表达式,所以要小心(以防您的列有其他数据)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多