2012-06-18 2 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? Что вы подразумеваете под «получить значения ячейки следующих пяти последовательных терминов?» Вы имеете в виду, проверить oCell против 5 клеток под ним, по ряду? –

ответ

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 

, потому что свойство Value диапазона (Cell) возвращает значение, связанное с этой ячейкой.

Поскольку такая логика не имеет смысла, и я думаю, что ошибка связана с тем, как вы понимаете, как работать с объектами Excel в VBA, учитывая тот факт, что вы новичок в VBA, я предполагаю, что вы пытаетесь см., если значение в любой из 5 строк непосредственно ниже oCell эквивалентно 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 ...

Смежные вопросы