Hallo Excel Profis,
da stehe ich mal wieder wie der Ochse vor dem B...
Mit meinem Makro zähle ich alle 3er Blöcke (welche im Bereich <=21% liegen, nebeneinander sind), trage das Ergebnis in CP der entsprechenden Zeile ein.
Zudem wird der "3er Block" mit Hintergrundfarbe formatiert.
Klappt!
Will ich aber nun das selber mit 4er Blöcken machen; Klappt nicht!
Das funktionierende Makro:
Sub ZähleBlöcke_3er()
Dim ws As Worksheet
Dim rng As Range
Dim values As Variant
Dim numRows As Long
Dim numCols As Long
Dim i As Long, j As Long, k As Long
Dim blockCount As Long
Dim blockFlag As Boolean
Set ws = ThisWorkbook.Sheets("Wertung")
Set rng = ws.Range("F3:CO" & ws.Cells(ws.Rows.count, "A").End(xlUp).Row)
values = rng.Value
numRows = UBound(values, 1)
numCols = UBound(values, 2)
For i = 1 To numRows
blockCount = 0
For j = 1 To numCols - 2
blockFlag = True
If values(i, j) <= 0.21 And values(i, j + 1) <= 0.21 And values(i, j + 2) <= 0.21 Then
If j > 1 Then
If values(i, j - 1) <= 0.21 Then
blockFlag = False
End If
End If
If j < numCols - 3 Then
If values(i, j + 3) <= 0.21 Then
blockFlag = False
End If
End If
Else
blockFlag = False
End If
If blockFlag Then
blockCount = blockCount + 1
' Hintergrundfarbe für die aktuellen Zellen setzen
For k = 0 To 2
ws.Cells(i + 2, j + k).Interior.Color = RGB(255, 217, 102)
Next k
j = j + 2
End If
Next j
ws.Cells(2 + i, "CP").Value = blockCount
Next i
End Sub
und das nicht funktionierende:
Sub ZähleBlöcke_4er()
Dim ws As Worksheet
Dim rng As Range
Dim values As Variant
Dim numRows As Long
Dim numCols As Long
Dim i As Long, j As Long, k As Long
Dim blockCount As Long
Dim blockFlag As Boolean
Set ws = ThisWorkbook.Sheets("Wertung")
Set rng = ws.Range("F3:CO" & ws.Cells(ws.Rows.count, "A").End(xlUp).Row)
values = rng.Value
numRows = UBound(values, 1)
numCols = UBound(values, 2)
For i = 1 To numRows
blockCount = 0
For j = 1 To numCols - 3
blockFlag = True
If values(i, j) <= 0.21 And values(i, j + 1) <= 0.21 And values(i, j + 2) <= 0.21 And values(i, j + 3) <= 0.21 Then
If j > 1 Then
If values(i, j - 1) <= 0.21 Then
blockFlag = False
End If
End If
If j < numCols - 4 Then
If values(i, j + 4) <= 0.21 Then
blockFlag = False
End If
End If
Else
blockFlag = False
End If
If blockFlag Then
blockCount = blockCount + 1
For k = 0 To 3
ws.Cells(i + 2, j + k).Interior.Color = RGB(255, 217, 102)
Next k
j = j + 3
End If
Next j
ws.Cells(2 + i, "CP").Value = blockCount
Next i
End Sub
Kann bitte ein Experte mal drauf schaun und mich auf den Fehler aufmerksam machen?!
https://www.herber.de/bbs/user/168618.xlsb
Gruss
Fred