使用 Excel 2016 和音频文件的长度,例如 0.004293981 = 0:06:11 (h:mm:ss)

使用 Excel 2016 和音频文件的长度,例如 0.004293981 = 0:06:11 (h:mm:ss)

我正在制作一个电子表格,用于对大量(10,000 多个)音频文件进行分类,这些文件可以是 Wav、Flac、mp3、Ape 和 ._Pro Tools 格式。

数据以平面工作表的形式提供给我,我在处理每条轨道的轨道长度信息时遇到了问题。

在工作表中,每首曲目的长度为 00:06:11。单元格似乎是 hh:mm:ss 的自定义格式。有些曲目的长度可能超过一小时(02:06:11),有些曲目的长度可能只有几分钟(00:06:11),而有些曲目的长度只有几秒(00:00:11)。

我需要删除多余的 00 & :,具体取决于每个文件的长度,例如 02:06:11 变为 2:06:11,00:06:11 变为 6:11,小于 60 秒的文件 00:00:11 变为 0:11。excelforum.com=IF(TrackDataImport!C2<1/24,"mm:ss","hh:mm:ss")上的 Fluff13 为我提供了公式,该公式查看单元格并返回该单元格中的数据是分钟和秒还是小时、分钟和秒。但我无法将其转换为多条件公式,以适当格式化目标单元格。它也没有告诉我它是否只是“ss”

我知道这=TEXT(TrackDataImport!C2,"hh:mm:ss")将把输入到各个单元格中的数据格式化为各种格式,但我需要一个公式来提前查看传入的数据,确定它是否h:mm:ss, mm:ss or m:ss or ss(但添加回来“0:”使其成为“0:11”)并应用适合的格式。

我研究过 Excel TIME 函数,但我发现它很混乱,每个网站似乎都用它来表示物理时间流逝,例如:下午 12:01 等等。太混乱了。

如果这有助于更好地描述我希望实现的目标,这里有一张工作表流程图类型的表的图像。 配方流程图

答案1

我认为这个公式有效:

=IF(HOUR(A1)>0,TEXT(A1,"h:mm:ss"),IF(MINUTE(A1)>0,TEXT(A1,"m:ss"),TEXT(A1,"m:ss")))

否则 -

您可以尝试如下 UDF:

Option Explicit
Function TFormat(tArget As Range) As String

If Hour(tArget) > 0 Then
    If Hour(tArget) > 10 Then
    TFormat = Format(tArget, "hh:mm:ss")
    Else
    TFormat = Format(tArget, "h:mm:ss")
    End If
    Exit Function
End If

If Minute(tArget) > 0 Then
    If Minute(tArget) > 10 Then
    TFormat = Format(tArget, "nn:ss")
    Else
    TFormat = Format(tArget, "n:ss")
    End If
    Exit Function
End If

TFormat = Format(tArget, "n:ss")

End Function

在此处输入图片描述

您需要打开开发人员窗口(ALT F11 应该可以工作)。然后插入模块并粘贴代码。将其用作普通函数,如果您不想保留该函数,只需复制并粘贴值,然后删除代码即可。

答案2

几乎但不完全满足您要求的单元格自定义格式样式是

[>0,416666] hh:mm:ss;[>0,04166] h:mm:ss; mm:ss

它会抑制小时数字的前导零,但不会抑制两位数分钟数字的前导零。原因是只能满足三个条件,但实际需要满足四个条件。

条件中使用的数字是 0,416666 ≈ 10/24,相当于 10 小时(需要两位小时数字)和 0,04166 ≈ 1/24,相当于 1 小时(需要一位小时数字)。

相关内容