2017-09-22 2 views
-1

私がしようとしているのは、値が2つの列の値の間にあるかどうかをチェックし、値が内部にあれば "1"をセルに入れ、 "0" alredyは、次のjと続行してみてください。私はこれには単純な解決策があるが、援助は高く評価されることを知っおかげネストされたループ内からスキップする

For i = 1 To ll 
    For j = 1 To t 
    If Cells(j + 1, 12).Value >= Cells(i + 1, 9).Value And Cells(j + 1, 12).Value< Cells(i + 1, 10).Value Then 
Cells(j + 1, 13).Value = 1 
Next j 
    Else 
    Cells(j + 1, 13).Value = 0 
     Next i 
      End If 

`

+1

さて、あなたの文は、ループ内で開始し、それはあなたのインデントを修正する(http://rubberduckvba.com/indentation)[圧子]を使用し – twoleggedhorse

+2

外に終了することはできません場合はこれらのもつれのブロックエラーがであなたにジャンプします圧子。 –

答えて

3

あなたがExit For

For i = 1 To ll 
    For j = 1 To t 
     If Cells(j + 1, 12).Value >= Cells(i + 1, 9).Value And Cells(j + 1, 12).Value < Cells(i + 1, 10).Value Then 
      Cells(j + 1, 13).Value = 1 
      Exit For 
     Else 
      Cells(j + 1, 13).Value = 0 
     End If 
    Next j 
Next i 

をしたいしかし、私はあなたがループを反転させる必要があると思います。私は11

For j = 1 To t 
    For i = 1 To 11 
     If Cells(j + 1, 12).Value >= Cells(i + 1, 9).Value And Cells(j + 1, 12).Value < Cells(i + 1, 10).Value Then 
      Cells(j + 1, 13).Value = 1 
      Exit For 
     Else 
      Cells(j + 1, 13).Value = 0 
     End If 
    Next i 
Next j 
+0

Exitを押すとjの戻り値が1になり、再度チェックして値を1から0に移動します。 – Diego333

+0

最初のコードではなく2番目のコードを使用します。 –

1

を=ときに他のforループとそうでない場合、最終的に表現される唯一の値は、あなたがネストしているされています。これはあなたのコードに問題があります。

For i = 1 To ll 
    For j = 1 To t 
     If (Cells(j + 1, 12).Value >= Cells(i + 1, 9).Value And Cells(j + 1, 12).Value< Cells(i + 1, 10).Value) Then 
      Cells(j + 1, 13).Value = 1 
     Else 
      Cells(j + 1, 13).Value = 0 
     End If 
    Next j 
Next i 
+0

私が1つ上に行くときには、列のすべての値をチェックしていないので、0にする必要があるとき1 – Diego333

+0

サンプルを提供できますか? –

関連する問題