excel - Excel 公式 - 比较日期范围
问题描述
如何编写 EXCEL VBA 使我的日期从 04/JUNE > 04/JUNE 23:59 开始。我不能使用'= date + 5/6',因为我必须每天多次运行 VBA,它会将我的日期添加到明天/后天。我只是想让日期结束日期。请帮忙。
这个例子就像
单元格 A1:12/6 月单元格 B1:15/6 月单元格 C1:15/6 月 12:00 HRS 单元格 D1:=IF C1B2,“超出范围”,“好的!”)
在这种情况下,D1 仍将显示 OUT OF RANGE。
我有很多这样的改变,所以我正在考虑编写一个 VBA 来自动将 C1 从 15/JUNE -> 15/JUNE 23:59 转换,这样 D1 就会显示 Okay !
我在 vba 中尝试了 Cdate(Range(“D1”)) + 5/6 使其变为 23:00 小时,并且我在一天内运行此宏几次,它会继续将 23 小时添加到日期并使其更改为另一个日期。
解决方案
关于你在说什么?
关于:
- “Excel 公式” 或
- “EXCEL VBA”
?
关于:
- “比较日期范围”或
- “确定我的日期”
?
假设,VBA 是......
VBA 中的Date
类型是Double
,其中:
- 整数部分作为从...开始的天数(看 F1),以及
- 一天的小数部分。
因此,您想要的“04/JUNE > 04/JUNE 23:59”将:
? DateSerial(2018, 06, 4) + ((23& * 60& * 60&) + (59& * 60&)) / 86400&
18-06-04 23:59:00
是的,当然,您可以使用TimeSerial
而不是上面,但是......它没有让您正确理解 VBA 日期。
.
----------
添加:
抱歉,此代码是否仅适用于一个单元格,因为我有很多带有日期的单元格,我需要 VBA 将它们提取出来并转换为 23:59,例如,我运行一个 for 循环来更改类似 20 个连续多个范围的单元格. 而且我将在一天内运行几次宏,它会每次都在该日期添加 23 小时并导致它更改日期吗?
Public Sub sp_Test_Date()
Dim rSel As Range
Dim i&
Const H23M59 As Double = 1 - 60 / 86400
Set rSel = Selection
With rSel
For i = 1 To .Cells.Count
With .Cells(i)
If IsDate(.Value) Then
.Offset(0, 1).Value = CDate(Int(.Value) + H23M59)
End If
End With ' .Cells(i)
Next
End With ' rSel
End Sub
推荐阅读
- c++ - 反转一个数字并从头开始删除零
- ruby-on-rails - 如何在ruby erb html表中编写if语句
- javascript - 如何在CKEditor 5中上传图像时添加标题
- django - 用于验证 1 个字段与 Django 中的另一个字段的数据库级别约束
- git - 如何在 VS Code 中部分还原同事的 Git 提交?
- java - 单元测试用例失败:与此模拟的零交互
- android - Fortify:Android 不良做法:缺少 Google Play 服务更新的安全提供程序(但没有 Google Play 服务)
- python - 将引号转换为空格
- bash - Bash 中的一次性变量赋值
- python - 无法在 python 3.7 中将文件作为模块导入