我有这样的代码,我从Excel表中获取值并根据条件显示结果。
在我的第二个if
声明中,我想检查一下ocell.value < sd11
。
在检查我需要检查接下来的五个连续值之后,它们是否相等。如果是,则显示结果。
有谁能告诉我如何获得下五个连续学期的单元格值?我认为我在代码中提到但它不起作用。
Sub DoStuff()
Dim oCell As Range
sd11 = Range("s11")
For Each oCell In Range("e4:e48")
If oCell.Value < sd13 Then
Range("R2").Value = "Rule 1s voilation"
End If
If oCell.Value < sd11 And oCell.Value = oCell.Value + 1 And oCell.Value = oCell.Value + 2 And oCell.Value = oCell.Value + 3 And oCell.Value = oCell.Value + 4 Then
Range("T5").Value = "Rule 4s voilation"
End If
Next
End Sub
答案 0 :(得分:3)
在这部分代码中:
If oCell.Value < sd11 And oCell.Value = oCell.Value + 1 And oCell.Value = oCell.Value + 2 And oCell.Value = oCell.Value + 3 And oCell.Value = oCell.Value + 4 Then
Range("T5").Value = "Rule 4s voilation"
End If
如果oCell.Value为6且sd11值为11,则基本上是在询问
If 6 < 11 And 6 = 7 And 6 = 8 And 6 = 9 And 6 = 10 Then
Range("T5").Value = "Rule 4s voilation"
End If
因为Range(Cell)的Value属性返回与该单元格关联的值。
由于这种逻辑是无意义的,我认为错误与您了解如何在VBA中使用Excel对象的方式有关,因为您是VBA的新手,我会假设您正在尝试查看如果oCell正下方5行中的任何一行中的值等于oCell。这可以通过使用偏移功能引用单元格本身来完成。
' i used Or because I thought it might be more what you want. Change to AND if you require all 5 cells to be equal to oCell
If oCell.Value < sd11 Then
If oCell.Value = oCell.Offset(1).Value Or oCell.Value = oCell.Offset(2).Value Or oCell.Value = oCell.Offset(3).Value or oCell.Value = oCell.Offset(4).Value or oCell.Value = oCell.Offset(5).Value Then
Range("T5").Value = "Rule 4s voilation"
End If
End If
答案 1 :(得分:0)
科学地做到:
if WorksheetFunction.AveDev(oCell.Resize(5)) = 0 then
...