2017-12-02 5 views
0

VBAコードを探しています。if valueのVBAコードは、同じ列の<value 1 cell agoです

列内の任意のランダムなセルが同じ列の前のセルよりも小さい場合、

Column D Column E 
.01112  A 
.01114 
.01113 
.01112  A 
.01114 

すなわち、列E.

に「A」を配置。これは、私がこれまで持っているものです:

Sub ATest() 



Dim rngCell As Range, _ 
     rngDataRange As Range 

    Set rngDataRange = Range("D1:D5000") 

    rngDataRange.Offset(0, 1).Value = rngDataRange.Value 

    For Each rngCell In rngDataRange 
     With rngCell 

      If .Value > 0.1 And .Value < 0.5 Then 
      .Offset(0, 3).Value = .Value 'A[rngCell] to C[rngCell] 
      End If 
     End With 
    Next rngCell 
End Sub 
+0

あなたはそのためのVBAコードは必要ありません。あなたはセル式を使用することができます – jsotola

+0

.01113は.01114未満です。なぜ、.01113の隣に 'A'がありませんか?なぜ前のセルがない場合に.01112の隣に「A」があるのですか – jsotola

+0

上から下に移動するのではなく、下から上に移動します。 – JoeCool

答えて

0

あなたのサンプルでは、​​値が行の値よりも小さい場合、あなたが実際にそう、列Eに「A」を配置することを意味しあなたのコードに余分なIfステートメントが追加されます:

Sub ATest() 
    Dim rngCell As Range, _ 
     rngDataRange As Range 

    Set rngDataRange = Range("D1:D5000") 

    'This statement doesn't seem to be desired if you want to put the "A" 
    'in column E 
    'rngDataRange.Offset(0, 1).Value = rngDataRange.Value 

    For Each rngCell In rngDataRange 
     With rngCell 

      If .Value > 0.1 And .Value < 0.5 Then 
      .Offset(0, 3).Value = .Value 'A[rngCell] to C[rngCell] 
      End If 
      If .Value < .Offset(1, 0).Value Then 
       .Offset(0, 1).Value = "A" 
      End If 
     End With 
    Next rngCell 
End Sub 
+0

こんにちは、よろしくお願いします。次の行ではなく、同じ列内にあります。また、シーケンスは上から下に向かって下から上に移動します。 – JoeCool

+0

したがって、「下から上に移動する」場合は、各セルの値が下の行のセルの値より小さいかどうかを確認します**。答えのコードはうまくいくはずです。 (しかし、私はあなたが「次の行ではなく、同じ列内にある」という意味をよく分かりません。同じ列にある場合、比較できる唯一のものはその列の異なる行の値です。どのように2つの連続した行を比較することはできませんか?) – YowE3K

+0

こんにちは、ありがとう、あなたの返信をしてください。はい、あなたは正しいです、私は同じ列の異なる行を比較したいと思います。最新の日付は列の上部に表示されます。つまり、A2は最も古い日付で、下部はA10934です。 – JoeCool

関連する問題