Vba 如何搜索范围以查看该范围是否缺少行
我有一组数据,其中包含一个月内每小时的统计数据 有时,数据缺少一行,例如,当数据库因维护而停机时,因此我们无法收集统计数据。我需要做的是确定在每个24小时块中,小时列是否每次增加1。如果hour列中的值增加2,我需要添加一个空行,并用0填充每个单元格 这就是我试图做的:Vba 如何搜索范围以查看该范围是否缺少行,vba,excel,excel-2010,Vba,Excel,Excel 2010,我有一组数据,其中包含一个月内每小时的统计数据 有时,数据缺少一行,例如,当数据库因维护而停机时,因此我们无法收集统计数据。我需要做的是确定在每个24小时块中,小时列是否每次增加1。如果hour列中的值增加2,我需要添加一个空行,并用0填充每个单元格 这就是我试图做的: Sub btnAddZero() Dim srcRange As Range Dim intOffset As Integer 'select the starting row for counting
Sub btnAddZero()
Dim srcRange As Range
Dim intOffset As Integer
'select the starting row for counting the hours
Set srcRange = Sheets("Raw Data").Range("A4")
'Set the beginning offset to 4 to account for empty 4 rows
intOffset = 4
'number of days in the month
For j = 0 To 30
'number of hours in a day
' rows
Dim i As Integer
For i = 0 To 23
'if the first cell is not 1 more than the cell below it
If srcRange.Cells(intOffset, 4) <> srcRange.Cells(intOffset + i, 4) Then
'shift everything below this line down
srcRange.Rows(intOffset + i).Insert shift:=xlShiftDown
'set everything in this row to be 0
srcRange.Cells(intOffset + i, 1).Value = 0
srcRange.Cells(intOffset + i, 2).Value = 0
'set the value to be the same value as the cell above
srcRange.Cells(intOffset + i, 3).Value = srcRange.Cells(Row - 1, 3).Value
srcRange.Cells(intOffset + i, 4).Value = 0
srcRange.Cells(intOffset + i, 5).Value = 0
End If
Next i
intOffset = intOffset + i
'off set the range for next 24 hours
Set srcRange = srcRange.offset(intOffset)
Next j
End Sub
不幸的是。。。这将大范围的行设置为0,我相信这将插入22到28行0。第一次通过外部for循环时,在内部for循环的第四次迭代之后,这是0的行开始的地方
我认为我的第一个也是最大的问题是,我检查是否有时间缺失,但这并不能正常工作
任何帮助都将不胜感激
这是我正在使用的少量数据,您可以看到第4列缺少值15。我想在包含14的行之后添加一行0
9292 12377 2017-01-30 12 2471
1119515028 2017-01-301392
539363352017-01-3014374
1911 1959 2017-01-30 16 8
11995131812017-01-3017181我认为您如何检测丢失的小时数并插入行的逻辑不太正确。从另一个角度看问题,我以下面的逻辑为例。希望它能让你更接近解决方案 选项显式 代用霍尔切克 将wb设置为工作簿 将ws设置为工作表 设置wb=ThisWorkbook 设置ws=wb.SheetsRaw数据 暗时隙范围 将nextTimeSlot变暗为范围 设置时隙=ws.RangeD5 设置nextTimeSlot=timeSlot.Offset1,0 预期的一小时也一样长 预期小时数=0 不执行IsEmptynextTimeSlot.Value时执行 如果为expectedHour时隙。值,则 --哎呀,我们至少少了一个小时。 '我们需要插入多少小时的行? 暗淡的失踪小时数一样长 如果时间段.Value>expectedHour,则 ’--现在是中午,我们的数学很简单 missingHours=时隙。值-预期小时 其他的 损失小时数=23-预计小时数+1 如果结束 timeSlot.ResizemissingHours.EntireRow.Insert Shift:=xlShiftDown expectedHour=expectedHour+missingHours 其他的 设置时隙=时隙。偏移量1,0 设置nextTimeSlot=timeSlot.Offset1,0 预计小时数=预计小时数+1 如果结束 如果预计小时数>=24,则 预期小时数=0 如果结束 环 端接头
第4列中的值类型可能是时间戳?是日期还是时间?它会一直精确到小时吗?它是一个整数,从0到23取决于一天中的小时。这非常接近我所需要的!再次感谢你的帮助!