Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 自动筛选日期时间值-本地小数点问题_Excel_Vba_Filter_Formatting_Autofilter - Fatal编程技术网

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