如何添加2个不同格式的时间值

我想添加D6和D16这是:

在这里输入图像说明

在这里输入图像说明

但我不能添加他们,因为他们不是相同的格式。 我想以[h]:mm格式得到22458:10。 这个怎么做?

在第一个快照中,我看到公式栏显示一个时间,而第二个快照显示与单元格中相同的文本。 这意味着在第一张桌子上,您将数字格式化为自定义时间,而第二张桌子上只有一个文本。

你需要一个公式把这个文本转换成一个数字,然后你可以用这个数字来做math运算。

公式是这样的:

=(VALUE(LEFT(A1,FIND(":",A1)-1))*60+VALUE(MID(A1,FIND(":",A1)+1,2)))/24/60 

我注意到,Excel可以将两个数字相加,并显示30000:00 ,但如果您键入它,则无法将其识别为一次。 计算完值后,您可以将其作为值复制并粘贴,以取代文本。

编辑1:

当用户在单元格中input文本时,Excel分析文本并尝试使用类似于以下的逻辑来猜测用户意图:

  • 如果所有的字符都是数字,那么这是一个数字
  • 如果第一个字符是=那么这是一个公式
  • 如果有2或3组数字用-或用/分开,那么这是一个date
  • 如果有两组或三组数字分隔:那就是时候了

通常使用正则expression式来检查文本是否与定义数字,公式,date或时间的模式匹配。

例如,它看起来像Excel使用一个正则expression式匹配1到4个数字后跟一个冒号后跟1到2个数字。 与之匹配的Python正则expression式是{1,4}\d\:{1,2}\d

当Excel猜测你想input一个时间,因为你键入的内容看起来像一个时间,它计算你input的一天的一小部分,将单元格值设置为计算的数字,并将单元格格式设置为时间,以便看到你input的内容。 例如,如果input6:00 ,则Excel将从午夜(每天四分之一)计算6小时,因此它将单元格值设置为0.25,并将格式设置为时间。 如果你然后改变单元格格式为数字,你会看到有0.25。

以数字forms存储时间允许在公式中使用它们,如果将它们存储为文本,则这是不可能的。

你的问题是,一个Excel的家伙决定,当用户键入1234:12那么用户意味着写一个时间,但是当用户键入12345:12 ,用户意味着只写一个文本。

所以,这取决于您将该文本转换为数字,然后将时间格式设置为单元格。

你可以用上面的公式(这很长,但是很简单),或者每当单元格被修改时触发一个VBAmacros,当文本匹配12345:12 ,或者用一个macros来检查所有一个文件中的单元格,或者是一个在导入文件时执行它的macros,或者…你明白了。

编辑2:

这是一个函数,用5或6个数字转换所有的文本,后面跟着一个冒号,后面跟着两个数字:

 Sub ConvertTimesWith5Or6Digits() Dim C As Range, Text As String, Hours As String, Minutes As String, PosColon As Integer For Each C In Sheet1.UsedRange.SpecialCells(xlCellTypeConstants).Cells If C.Value2 Like "#####:##" Or C.Value2 Like "######:##" Then Text = C.Value2 PosColon = InStr(Text, ":") Hours = Left(Text, PosColon - 1) Minutes = Mid(Text, PosColon + 1) C.Formula = (Val(Hours) * 60 + Val(Minutes)) / 24 / 60 C.NumberFormat = "[h]:mm" End If Next C End Sub