在Excel中的格式为1h 30m + 2h 40m的总时间

时间:2018-07-31 05:03:08

标签: excel excel-formula formula formulas

我从表上花了一些时间在花格式。我想将它们添加到Excel工作表中并取它们的总和。

时间格式为

seperator

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output indent="yes" />

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="seperator"/>

    <xsl:template match="node/text()[preceding-sibling::seperator or following-sibling::seperator]">  
        <xsl:element name="{name(..)}">
            <xsl:copy-of select="../@*|."/>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

我需要的总和是

1h 30m

默认情况下是否有任何公式?如果没有,有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

尝试一下:

=TIMEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," ",":"),"h",""),"m",""))

需要将时间解析为原始数字...这可以通过left()和mid()完成,但是我认为嵌套的Substitute()调用使其更具可读性。

由内而外,
1.将“”更改为冒号,然后将结果传递到下一级
2.将“ h”更改为“”(即删除“ h”),将结果传递到下一级
3.将“ m”更改为“”(即删除“ m”),将结果传递到下一级
4.结果是一个文本值,需要将其转换为TIMEVALUE。

您需要将时间单元格的格式设置为hh:mm,

总数是上面单元格的sum()。

祝你好运。

enter image description here

答案 1 :(得分:0)

使用帮助列和自定义格式:

enter image description here

答案 2 :(得分:0)

您可以使用用户定义的函数轻松地执行此操作。下图显示了顶部两个单元格中最接近您的示例,底部单元格中的公式为=sumhm(a1:a2)

enter image description here

执行此操作的代码相对简单:

Option Explicit

Function sumhm(rng As Range)
    Dim pos As Integer
    Dim cell As Range
    Dim str As String
    Dim minutes As Long

    ' Process each cell in the range '

    minutes = 0
    For Each cell In rng
        ' Get string from cell, work out minutes, add to tally '

        str = cell.Text
        pos = InStr(1, str, "h")
        If pos > 0 Then
            minutes = minutes + 60 * CInt(Left(str, pos - 1))
            str = Mid(str, pos + 1)
        End If

        pos = InStr(1, str, "m")
        If pos > 0 Then
            minutes = minutes + CInt(Left(str, pos - 1))
        End If
    Next

    ' All done, revert to XhYm format '

    sumhm = CStr(Int(minutes / 60)) & "h" & CStr(minutes Mod 60) & "m"
End Function

使用UDF的好处是,您可以获取任意复杂的范围(例如C5:D9,G9:H16,B14:D18),并且可以正常工作。

它也集中了它,因此在一个地方可以修复诸如用户通过在字符串中放置空格来使自己的生活陷入困境之类的问题。或您在实现中可能发现的任何错误(或可能需要的增强功能,例如处理3y7w2d9h33m之类的错误)。