0

Excelシートから値を取得し、条件に従って結果を表示するこのコードがあります。

2 番目のifステートメントでは、 ocell.value < sd11.

次の 5 つの連続する値を確認する必要があることを確認した後、それらが等しいかどうかを確認します。はいの場合は、結果を表示します。

次の 5 つの連続した用語のセル値を取得する方法を誰か教えてもらえますか? コードで言及したと思ったことはありますが、機能していません。

 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
4

2 に答える 2

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
于 2012-06-18T19:43:40.920 に答える
0

科学的に行う:

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

于 2012-06-18T19:37:11.797 に答える