excel - 在 Excel/VBA 中使用 CountIF 和 01.03.1900 之前的日期
问题描述
我对 Execl 有一个奇怪的问题。特定单元格的值 ist 01.01.1900
,单元格的格式为date
-Format。01.01.1900
当我尝试通过CountIf
result is计算有多少实例时0
,搜索词是通过CDate()
-conversion 创建的。这是完整的代码:
Dim searchterm as Date
Dim someRange as Range
searchTerm = CDate("01.01.1900")
Application.WorksheetFunction.CountIf(someRange, searchTerm)
当日期开始之前,整个事情按预期工作01.03.1900
。根据相关日期,01.01.1900
我得到以下结果:
VarType(singleCellRange)
返回7
(日期格式)
singleCellRange.Value
返回31.12.1899
(另见此处)
所以问题是:我如何为有问题的日期获得正确的格式以便CountIf
再次工作?
解决方案
VBA 日期数据类型和 Excel 日期不同。
它们都存储为序列号,但使用 Excel,(使用 1900 系统):
- Excel,(使用1900系统):
1
-->1 Jan 1900
- VBA:
1
-->31 Dec 1899
由于 Excel 将(错误地)识别29 Feb 1900
为有效日期,因此基础值在1 Mar 1900
此后变得一致。
根据在此范围内计算日期的重要性,有多种解决方法。
1
如果日期早于1-Mar-1900
.
编辑:据一些人说,对这个错误的解释据说是为了与引入 Excel 时的首要工作表兼容:Lotus123,它有同样的错误。所以它和 Excel 一样长,它不太可能被改变,因为害怕破坏考虑到它的程序。
推荐阅读
- jquery - 集合的长度与 .each-executions 的数量有何不同?
- vue.js - 如何将 vue-cli 添加到现有项目中?
- android - 如何进行 robolectric 调用 `onCreate(bundle)` 而不是 `onCreate()`
- python - 如何将整数数组转换为特定长度的二进制数组
- r - 使用来自另一个数据框的引用清理重复项
- symfony - 如何通过 twig & symfony 安全地发送表单?
- ubuntu - ffmpeg 配置错误:找不到 libx264
- powershell - 如何使用 powershell 脚本获取 SharePoint 网站的可用语言列表?
- python - 集成选项以在 tkinter 的 NavigationToolbar2Tk 中另存为 PPT
- r - 使用 dcast (reshape2) 将数据塑造成宽格式使用计数而不是值填充单元格