excel - 如何使用VBA计算时间差?
问题描述
我是VBA的初学者。我只需要在 VBA 中解决我的问题。谢谢。
以下是我需要做的任务
从表中选择一个“ID”和一个“课程”。在下表中,我提到了一些 ID 和课程,但是我的项目有多个 ID 和课程。我无法继续为所有案例输入 ID 和课程名称。有没有聪明的方法来做到这一点?
对于特定 ID、特定课程和特定日期,我需要计算下表中针对特定“事件”给出的两行之间的时间差。前两行的时间差给出了“阅读”所花费的时间,第 2 行和第 3 行之间的差给出了“写作”所花费的时间,第 3 行和第 4 行之间的差给出了“写作”所花费的时间,依此类推.
任何帮助将不胜感激。数据格式在下面的链接中
解决方案
您可以修改代码并尝试:
Option Explicit
Sub test()
Dim strID As String, strCourse As String, strEvent As String
Dim DateTime1 As Date, DateTime2 As Date
Dim LastRow As Long, i As Long, y As Long
With ThisWorkbook.Worksheets("Sheet1")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow
strID = .Range("A" & i).Value
strCourse = .Range("B" & i).Value
DateTime1 = CDate(.Range("C" & i).Value) & " " & CDate(.Range("D" & i).Value)
strEvent = .Range("E" & i).Value
For y = 2 To LastRow
If y <> i Then
If .Range("A" & y).Value = strID And .Range("B" & y).Value = strCourse And .Range("E" & y).Value = strEvent And .Range("F" & i).Value = "" And .Range("F" & y).Value = "" Then
DateTime2 = CDate(.Range("C" & y).Value) & " " & CDate(.Range("D" & y).Value)
.Range("F" & i).Value = Abs(DateDiff("h", DateTime2, DateTime1))
End If
End If
Next y
Next i
End With
End Sub
推荐阅读
- javascript - 第一次点击链接不可点击
- git - git 归档输出是否应该通过 git 版本进行位重复?
- java - 使用反射在 JNI 中查找 Java 类是否为最终类
- sql - 从 XML 类型列解析或获取表
- java - 使用带有 SSL 的 JAVA 连接 MQ 版本 9
- unix - 使用查找时如何不显示不可访问的文件夹
- socrata - SODA 发现 API 的问题:返回的数据集总数与浏览中列出的数据集不同
- java - 无法解密使用 AES-GCM-256 在 Java 中加密的 Node 中的数据
- python - 关于使用 talib 与 gpu 或 tpu 使计算 EMA 和其他更快
- c# - 无法解析程序集 UniversalApiContract