2012-06-18 80 views
0

我有這樣的代碼,我從Excel工作表中獲取值並根據條件顯示結果。在VBA中獲得連續單元格的值

在我的第二個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

將所有的「和」改爲「或」...但等等,一個值如何能等於自己加1? 「獲得下五個連續條件的單元格值」是什麼意思?你的意思是,按行檢查它下面的5個單元格的oCell? –

回答

3

在您的這部分代碼:給予6 oCell.Value和11 SD11值

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 

,你實質上是要求

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 
+0

謝謝..這就是我想要的.. :) – james

0

就做科學:

if WorksheetFunction.AveDev(oCell.Resize(5)) = 0 then ...

相關問題