在VBA中查找时间段

时间:2012-11-18 00:50:50

标签: vba

Date        Time    Variable
2011.01.02  22:22   1258.25
2011.01.02  22:24   1258.5
2011.01.02  22:26   1258.25
2011.01.02  22:27   1258.25
2011.01.02  22:28   1258.5
2011.01.02  22:29   1258.5
2011.01.02  22:31   1258.5
2011.01.02  22:32   1260.5
2011.01.02  22:33   1259.75
2011.01.02  22:34   1259.75
2011.01.02  22:37   1259.75
2011.01.02  22:38   1260
2011.01.02  22:39   1260.25
2011.01.02  22:40   1260
2011.01.02  22:43   1259.75
2011.01.02  22:44   1259.5
2011.01.02  22:47   1259.75
2011.01.02  22:48   1260
2011.01.02  22:52   1259.75
2011.01.02  23:10   1259.75
2011.01.02  23:12   1260
2011.01.02  23:13   1260.25
2011.01.02  23:14   1260.25
2011.01.02  23:15   1260.5
2011.01.02  23:16   1260.5
2011.01.02  23:17   1260.25

嘿伙计们,

我在excel中有时间序列数据,我想搜索以23:xx(23小时)开头的所有“时间”值并选择该单元格。相反,我得到的是VBA选择任何有时间“XX:23”(第23分钟)的单元格

假设我在“时间”列上有我的活动单元格,我正在使用此代码,但它不起作用。我做错了什么?

Range(ActiveCell, ActiveCell.End(xlDown)).Find("23:", lookat:=xlPart).Select

后续问题:

另一个快速问题道格,我希望能够找到所有以“23:XX”开头的第23个小时的数据点,找到第一个值和最后一个值,突出显示其间的所有内容并将其命名为范围。

在第一次发现“23:XX”之后我想到了一个“Do”语句循环遍历单元格

Do
     ActiveCell.Offset(1, 0).Select
Loop Until Left(ActiveCell) = "23:"

但似乎“左”功能将单元格识别为数字,而不是时间格式单元格?我该怎么办?非常感谢你!!

1 个答案:

答案 0 :(得分:2)

Lookin函数的FIND参数指定是否查看“公式” - 您在编辑模式中看到的文本 - 或Value - 单元格中显示的内容。您的FIND函数正在查看公式,因此它会在单元格中看到“11:10 PM”。更改它以查看值,如下所示:

Range(ActiveCell, ActiveCell..End(xlDown)).Find("23:", lookat:=xlPart,lookin:=xlvalues).Select