我想知道是否有人会在下面的脚本中建议对指定行进行一些更正。 这是投掷“对象变量或块变量未设置”警报。 我只能猜测这意味着“CellFound”范围没有被设置,并且问题在于该行。 “CellFound”变量旨在查找并存储DateRng中的cell.value < = 25的位置,以供下列条件使用查找并存储单元格地址值<= x
要重新迭代,整个脚本将执行以下任务:
找到位于该范围内的细胞(ⅰ)内包含的特定字符串2个细胞(DateRng)
环路之间的范围内具有一个值< = 25
比较两个与“i”偏移的其他单元格
将以“i”为中心的行的范围导出到不同的工作表,以等待上述条件的结果。
谢谢你的时间。
Sub ReportCells()
Dim LR As Long, i As Long
Dim j, k As Long
Dim StartDate, FinishDate As String
Dim Sh As Worksheet: Set Sh = Sheets("Full chart and primary cals")
Dim CellFound As Range
'Range Extraction Script
'Search location and values
LookupColumn = "B"
StartDate = "2013.01.02 20:00"
FinishDate = "2013.01.09 20:00"
'Find Lower Limit
For j = 1 To 30000
If Sh.Range(LookupColumn & j).Value = FinishDate Then FinishDateRow = j
Next j
'Find Upper Limit
For k = FinishDateRow To 1 Step -1
If Sh.Range(LookupColumn & k).Value = StartDate Then StartDateRow = k - 1
Next k
'Set Range once located
Dim DateRng As Range: Set DateRng = Sh.Range(LookupColumn & StartDateRow & ":" & LookupColumn & FinishDateRow)
MsgBox DateRng.Address
'Find Cell
With DateRng
LR = Range("B" & Rows.Count).End(xlUp).Row
For i = 1 To LR
** Set CellFound = .Find(Sh.Range("M:M").Value <= 25, LookIn:=xlValues) **
MsgBox CellFound.Address
If Not CellFound Is Nothing And CellFound.Offset(0, -5).Value < CellFound.Offset(-1, -5).Value Then .Offset(-3, 0).Resize(10, 1).EntireRow.Copy Destination:=Sheets("DownT").Range("A" & Rows.Count).End(xlUp).Offset(2)
If Not CellFound Is Nothing And CellFound.Offset(0, -5).Value > CellFound.Offset(-1, -5).Value Then .Offset(-3, 0).Resize(10, 1).EntireRow.Copy Destination:=Sheets("UpT").Range("A" & Rows.Count).End(xlUp).Offset(2)
Next i
End With
End Sub
编辑:单元格选择和复制块已被修改为下面的代码。看起来值< = 25设置范围命令没有执行,因为它们应该是。他们肯定会过滤数据,但是我不确定哪一列。该块返回正确大小的一系列单元格。但只有一个范围(而不是20左右)。而错行范围的:SI猜的任何进展都是进步,无论它是否是正确的或错误的
With Sheets("Full chart and primary cals")
LR = Range("B" & Rows.Count).End(xlUp).Row
'For i = Range("M" & Rows.Count).End(xlUp).Row To 1 Step -1
For i = 1 To LR
With DateRng.Range("M" & i)
If Range("M" & i).Value <= 25 Then Set CellFound = Sh.Range("M" & i)
If Not CellFound Is Nothing Then .Offset(-5, 0).Resize(10, 1).EntireRow.Copy Destination:=Sheets("DownT").Range("A" & Rows.Count).End(xlUp).Offset(2)
End With
Next i
End With
哪条线特别竟然放弃了错误? – hnk
对不起,我标记了它。今天必须一直在看屏幕太长:S 修改后的文章:行标为**** – user3180258
嗨。 V.对于这个答案感到抱歉。巨大的错误理解。请忽略较早的'解决方案'并恢复原来的.Find()代码。我会稍后尝试发布修订后的解决方案。对不起,那 – hnk