如何在Excel公式中将Jira经过时间格式转换为分钟?

qmelpv7a  于 2023-03-20  发布在  其他
关注(0)|答案(4)|浏览(193)

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

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

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

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

这一切都需要发生在Excel中,理想情况下只使用一个公式,将工作的所有这样的时间跨度-宁愿避免VBA,如果可能的话。

0wi1tuuw

0wi1tuuw1#

把它分解成几个步骤。
多少天?如果它包含“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)))

多少分钟?这基本上与小时相同,但查找的是“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)))
cnjp1d6j

cnjp1d6j2#

当你的资料在A栏由A3开始时,你可使用这个公式并复制下来:

=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)
j91ykkif

j91ykkif3#

当数据包含周或分钟,且数字位数任意时,前面的答案对我都不起作用,所以我修改了前面的答案,以获得

=SUM(SUMIF(REGEXEXTRACT(A2, "(\d+)w") * 40, ">#N/A")) + SUM(SUMIF(REGEXEXTRACT(A2, "(\d+)d") * 8, "<>#N/A")) + SUM(SUMIF(REGEXEXTRACT(A2, "(\d+)h") * 1, "<>#N/A")) + SUM(SUMIF(REGEXEXTRACT(A2, "(\d+)m") /60, "<>#N/A"))
qpgpyjmq

qpgpyjmq4#

我只需要写一个公式来解析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")), "")

你最好不要太仔细地看它,因为它使用正则表达式,所以要小心(以防你的列有其他数据)。

相关问题