2017-06-13 4 views
1

In der Spalte "V34: V99" stehen die Ziffern 1,2,3,0 in der gestreuten Reihenfolge. Ich möchte zählen, wie viele Situationen (n) sein werden (drei aufeinanderfolgende 1 к=3, ohne Berücksichtigung von Nullen), wenn 2 oder 3 auftreten, dann k=o. Ich habe den Code geschrieben, aber es funktioniert nicht (gibt keine Anzahl von Situationen (n)).MsgBox gibt keinen Wert

0 
1 
0 
1 
0 
0 
0 
1 
0 
1 
0 
0 
0 
0 
1 
0 
0 
1 
0 
0 
1 
0 
0 
1 
0 
0 
1 
0 
0 
0 
1 
0 
0 
0 
0 
3 
0 
1 
0 
3 
0 
0 
0 
3 
0 
1 
0 
1 
0 
0 
1 
3 
0 
1 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 

-Code

Sub а33условие3() 

    Dim k, n As Integer 
    Dim parRange As Range 

    Set parRange = Range("V34:V99") 
    k = 0 
    n = 0 
    For Each Cell In parRange.Rows 

     If Cell.Value = 1 Then 
      k = k + 1 
      If k = 3 Then 
       n = n + 1 
       k = o 
       MsgBox n 
      End If 
     End If 
     If Cell.Value = 2 Or 3 Then 
      k = 0 
     End If 
    Next Cell 

End Sub 
+0

Haben Sie Werte in 'V34 überprüfen möchten: V99' Bereich oder in voller Reihen? Weil Sie jetzt volle Zeilen prüfen ('parRange.Rows'). Wenn das richtig ist, dann denke ich, indem ich für jede Zelle in ParRange.Rows 'Zellen nach Spalten verwende, d. H.' A34, A35, A36, ..., A99, B34, B35, ... '. –

+0

Sie können auch eine zusätzliche if-Anweisung vermeiden, indem Sie 'End If, wenn Cell.Value = 2 oder 3 'durch' ElseIF Cell.Value = 2 oder 3' ersetzen. Auch bin ich mir nicht sicher, ob die Oder-Anweisung so funktioniert, oder dass Sie 'Cell.Value = 2 oder Cell.Value = 3' schreiben sollten – Luuklag

+0

@Luuklag, Cell.Value = 2 Oder Cell.Value = 3 hilft, jetzt funktioniert alles. Danke vielmals ! – maxim465

Antwort

0

Sie können nicht die Or Aussage in dieser Art und Weise nutzen. Sie sollten Cell.Value = 2 Or Cell.Value = 3 Auch verwenden Sie selbst eine If Anweisung speichern, aktualisiert Code siehe unten:

Sub а33условие3() 

Dim k, n As Integer 
Dim parRange As Range 

Set parRange = Range("V34:V99") 
k = 0 
n = 0 
For Each Cell In parRange.Rows 

    If Cell.Value = 1 Then 
     k = k + 1 
     If k = 3 Then 
      n = n + 1 
      k = o 
      MsgBox n 
     End If 
    ElseIf Cell.Value = 2 Or Cell.Value = 3 Then 
     k = 0 
    End If 
Next Cell 

End Sub