2017-10-25 9 views
0

私は一連のデータを持っており、それに応じてTEまたはLEエッジかどうかを判断する必要があります。私は以下のコードでまとめようとしたいくつかの条件があります。 コードは動作していますが、空白が残っています。これは、特定の条件が考慮されていないことを意味します。複数の "ifとelse if" VBAコードを改善するには

具体的には、私はそれはこの1つだと思う:

ElseIf Val(Range("G" & i).Value) > 0.02149 Then Range("N" & i).Value = "TE" 

は、それがすべてのこの場合はとのElseIfの問題だが、私はそれへの解決策を見つけることができませんでしたね。

ご提案がありましたら教えてください。ありがとうございました。

Sub edge() 

On Error Resume Next 

Dim lastRowIndex As Integer 
Dim firstRowIndex As Integer 
Dim MyString As String 


lastRowIndex = ActiveSheet.UsedRange.Rows.Count 

MyString = Application.ThisCell.Address 
firstRowIndex = Range(MyString).Select 

For i = firstRowIndex To lastRowIndex 
If i Mod 2 <> 0 Then 
    If Range("A" & i).Value = Range("A" & i + 1).Value Then 
      If Range("G" & i).Value > Range("G" & i + 1).Value Then 
        If Range("H" & i).Value = "0" Then Range("N" & i).Value = "TE" 
        ElseIf 0.01898 < Val(Range("G" & i).Value) < 0.02149 Then Range("N" & i).Value = "LE" 
        **ElseIf Val(Range("G" & i).Value) > 0.02149 Then Range("N" & i).Value = "TE"** 
        End If 

      ElseIf Range("G" & i).Value < Range("G" & i + 1).Value Then 
        If Range("H" & i).Value = "0" Then Range("N" & i).Value = "LE" 
        ElseIf 0.01898 < Val(Range("G" & i).Value) < 0.02149 Then Range("N" & i).Value = "LE" 
        ElseIf Val(Range("G" & i).Value) > 0.02149 Then Range("N" & i).Value = "TE" 
        End If 



ElseIf i Mod 2 = 0 Then 
    If Range("A" & i).Value = Range("A" & i - 1).Value Then 
      If Range("G" & i).Value > Range("G" & i - 1).Value Then 
        If Range("H" & i).Value = "0" Then Range("N" & i).Value = "TE" 
        ElseIf 0.01898 < Val(Range("G" & i).Value) < 0.02149 Then Range("N" & i).Value = "LE" 
        ElseIf Val(Range("G" & i).Value) > 0.02149 Then Range("N" & i).Value = "TE" 

      ElseIf Range("G" & i).Value < Range("G" & i - 1).Value Then 
        If Range("H" & i).Value = "0" Then Range("N" & i).Value = "LE" 
        ElseIf 0.01898 < Val(Range("G" & i).Value) < 0.02149 Then Range("N" & i).Value = "LE" 
        ElseIf Val(Range("G" & i).Value) > 0.02149 Then Range("N" & i).Value = "TE" 
      End If 
    End If 
End If 


Next 

End Sub 

答えて

0

ようこそ。コードでサポートされていないケースがいくつかあります。どのような場合:

  1. Range("A" & i).Value <> Range("A" & i + 1).Value
  2. Range("G" & i).Value = Range("G" & i + 1).Value
  3. Val(Range("G" & i).Value) < 0.01898
  4. Val(Range("G" & i).Value) = 0.02149

また、あなたはそれをやった方法で、1つのIf文で2つの不等式を使用することはできません。

ElseIf 0.01898 < Val(Range("G" & i).Value) And Val(Range("G" & i).Value) < 0.02149 Then 

のように、代わりにAndを使用して、あなただけの使用、Ifに条件の反対でElseIfを使用する必要はありませんElse

If i Mod 2 <> 0 Then 
    ... 
Else 
    ...