有人知道拥有Excel的最好方法吗?
查看一列以查找所有类似的日期
计算最小日期时间和最大日期时间之间的总时间
将总计放在单独的列中
C D
8/27/2018 14:02 insert total time for each date here, ie: 8/27 00:05:03
8/27/2018 14:01
8/27/2018 14:01
8/27/2018 13:57
8/27/2018 8:56
8/24/2018 10:01
8/24/2018 9:36
8/23/2018 6:01
8/21/2018 12:32
8/21/2018 11:23
8/20/2018 14:03
8/20/2018 10:54
8/17/2018 14:47
我使用了=TEXT(C7-C8, "h:mm:ss")
,但这根本不适合我。我要添加一个vlookup吗?
答案 0 :(得分:0)
此解决方案要求您在VBA中创建UDF(用户定义的功能)。
本质上,您将循环查找列中所有匹配的日期。在所有匹配的日期上,您将根据需要修改minDt
和maxDt
变量-如果新时间低于或高于当前存储的时间,则进行修改。
这可能不是最佳解决方案,因为创建包含循环的UDF会成为瓶颈,但这是我目前能想到的。
Option Explicit
Function getTimeDiff(col As String, inputDt As Date)
Dim colRng As Range, compDt As Date
Set colRng = Columns(col)
compDt = Int(inputDt) '<-- Converts date/time to date only
Dim cel As Range, maxDt As Date, minDt As Date, tmpDt As Date
maxDt = inputDt
minDt = inputDt
For Each cel In colRng.Cells
If cel = "" Then Exit For
tmpDt = CDate(cel)
If Int(tmpDt) = compDt Then
If tmpDt > maxDt Then
maxDt = tmpDt
ElseIf tmpDt < minDt Then
minDt = tmpDt
End If
End If
Next cel
getTimeDiff = Format(maxDt - minDt, "h:mm")
End Function
在此处阅读有关创建UDF的信息
如果您熟悉UDF,则可以跳过本节
- 按 Alt + F11 打开VBA。
- 在VBE中,单击插入> 模块
- 将以上代码粘贴到模块中
- 另存为已启用宏的工作簿
保存UDF后,现在可以使用新创建的公式。
您的日期似乎在C列中。因此,如果您的第一个日期在C2
中,则D2
的公式将为:
=getTimeDiff("C", C2)