我正在制作一个电子表格,用于对大量(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 小时(需要一位小时数字)。