excel - EXCEL VBA 类型不匹配(13)时间戳差异
问题描述
Excelfile 您好,我有一个带有时间戳的 excel 文件,如图所示,我想计算差异并在新列中输入值。我尝试了以下代码,但它显示类型不匹配错误,我不知道为什么。我知道这很容易,但我是 VBA 新手,所以请帮助我。
\\Sub macro1()
Dim i As Integer
Dim j As Integer
Dim k As Integer
i = 1
j = 2
k = 2
Do While Cells(i, 1).Value <> ""
Cells(k, 2).Value = Cells(j, 1).Value - Cells(i, 1).Value
i = i + 1
j = i + 1
k = i
Loop
End Sub
解决方案
您的格式 (2.10.2017 08:08:30) 应在使用 CDate 将单元格值转换为日期之前进行操作,然后使用 VBA 函数 DateDiff。见下文。将 =timeDiff(A2,A1) 放入 B2,然后复制到 B3 并向下。下面是 VBA 代码。
Public Function transformCellStrInDate(ByVal rng As Range) As Date
Dim splitArr As Variant, dateArr As Variant, dateStr As String
splitArr = Split(Trim(rng.Value))
dateArr = Split(splitArr(0), ".")
dateStr = dateArr(0) & "/" & dateArr(1) & "/" & dateArr(2) & " " & splitArr(1)
transformCellStrInDate = CDate(dateStr)
Erase dateArr: Erase splitArr
End Function
Public Function timeDiff(ByVal rngY As Range, ByVal rngX As Range) As Long
timeDiff = DateDiff("n", transformCellStrInDate(rngX), transformCellStrInDate(rngY)) / 60 ' in Hours
End Function
推荐阅读
- java - 使用 Spring Boot 从 Swapi API https://swapi.co/api/people/ 获取数据
- python - 用python beautiful soup从h1和id中提取文本
- excel - 将多个 Excel 文件合并到一个工作簿时出错
- java - 如何使用 Apache POIFS/HSMF 更改 Outlook .msg 文件的附件
- java - 为什么将休眠查询结果传递给 toJson 方法时会出错?
- google-cloud-platform - 适用于 Compute Engine 的 GCP API 网关
- reactjs - 如何在 React 的辅助函数中使用状态?
- reactjs - React JS Axios 地图
- python - 2021年用python发邮件最方便的方法是什么?
- haproxy-ingress - 自定义 TCP 端口的 TCP 白名单在 haproxy 入口中不起作用