Excel 自动筛选日期时间值-本地小数点问题
背景 当我试图为另一个用户解决一个问题时,我遇到了一个本地问题 设想一些非常简单的示例数据(为真实的日期时间值): 不需要更复杂的事情来向你展示眼前的问题。让我们想象一下,我们希望在Excel 自动筛选日期时间值-本地小数点问题,excel,vba,filter,formatting,autofilter,Excel,Vba,Filter,Formatting,Autofilter,背景 当我试图为另一个用户解决一个问题时,我遇到了一个本地问题 设想一些非常简单的示例数据(为真实的日期时间值): 不需要更复杂的事情来向你展示眼前的问题。让我们想象一下,我们希望在3-1-2019 01:00(1月3日)进行过滤。简单地使用: Range("A1").AutoFilter Field:=1, Criteria1:="3-1-2019 01:00" 工作很好,一个硬编码的字符串变量确实可以工作,但我考虑了对真实数值进行更动态的过滤,如下所示 代码 问题 虽然我确实读到了MS
3-1-2019 01:00(1月3日)进行过滤。简单地使用:
Range("A1").AutoFilter Field:=1, Criteria1:="3-1-2019 01:00"
工作很好,一个硬编码的字符串变量确实可以工作,但我考虑了对真实数值进行更动态的过滤,如下所示
代码
问题
虽然我确实读到了MS可能忽略了自动过滤器的内容,但我认为我所描述的问题一定与本地设置有关。VBA
如何将标准作为整数插入?如何避免呢?除了我的解决方法(或帮助器列),还有其他解决方法吗
注意:
- 通过手动插入逗号更改长数字,更改了正确日期/时间格式值中的值
- 使用
TimeValue
时容易出现浮点错误,因为1:00
的小数比显示的小数多得多。在字符串变量中插入完整的数值解决了逗号消失的问题,并显示了格式化的日期/时间值,但未显示任何结果
检查一个:可能逗号(“,”)消失了,因为它在您的区域设置中被设置为数字分组符号。@Teamothy,逗号是我的十进制分隔符,而点是分组符号。然而,玩弄这些也无济于事。谢谢你的建议。我现在知道一定有浮点错误,因为1:00
实际上是004166667
。将43467.0416666667
作为标准实际显示为过滤器中的3-1-2019 1:00
,但没有显示结果。。。。
Range("A1").AutoFilter Field:=1, Criteria1:="3-1-2019 01:00"
Sub test()
Dim SearchNum As Double: SearchNum = DateValue("3-1-2019") + TimeValue("1:00")
Range("A1").AutoFilter Field:=1, Criteria1:=">=" & SearchNum, Operator:=xlAnd, Criteria2:="<=" & SearchNum
End Sub
Sub test()
Dim str As String: str = DateSerial(2019, 1, 3) & " " & Format(TimeSerial(1, 0, 0), "hh:mm")
Range("A1").AutoFilter Field:=1, Criteria1:=str
End Sub