Loop trägt falsche Werte ein
26.02.2017 17:49:30
Lisa
ich stecke mal wieder fest und konnte auch nach mehrstündigem Probieren und Forschen keine Lösung für mein Problem finden.
Mit dem unten stehenden Befehl, will ich zunächst Summen und Hits zusammenrechnen über verschiedene Tabellenblätter und drei andere Kriterien (stim, kat, rkat). Das funktioniert an sich mit dem Befehl auch schon ganz gut. Ich habe mir auch über eine Messagebox schon rausgeben lassen, nach welchen Kriterien er in jedem Loop sucht und wo er die dann einträgt und das stimmt alles. Nur leider bekomme ich an einigen Stellen falsche Werte angegeben und unter "meinpos" trägt er gar nichts ein. Vielleicht kann ja jemand hier den Knoten in meinem Kopf lösen.
Liebe Grüße,
Lisa
Der Code:
Sub Test()
Dim q As Worksheet, Z As Worksheet
Dim QC As Range, QD As Range, QF As Range
Dim o As Integer, p As Integer, r As Integer, s As Integer
Dim t As Integer, u As Integer, v As Integer, w As Integer
Dim x As Integer, y As Integer, aa As Integer
'Löschen aller Werte in der Tabelle
Set Z = ActiveWorkbook.Worksheets("Berechnung")
For o = 3 To Z.UsedRange.Columns.Count
For p = 2 To Z.UsedRange.Rows.Count
Z.Cells(p, o).Value = ""
Next p
Next o
'berechnet die Summe der Reaktionszeiten und die Anzahl an Hits
For r = 2 To Worksheets("Berechnung").UsedRange.Rows.Count
stim = Worksheets("Berechnung").Range("B" & r).Value
For s = 3 To ActiveWorkbook.Worksheets.Count
Set q = Worksheets(s)
Set QC = q.Range("C:C")
Set QD = q.Range("D:D")
Set QF = q.Range("F:F")
With WorksheetFunction
t = 2 + Worksheets("Angaben").Range("E1").Value
u = -1
v = 0
w = 11
x = 12
For aa = 1 To 3
kat = Worksheets("Angaben").Range("B" & aa).Value
u = u + 4
v = v + 4
If u 0 Then
Z.Cells(r, u).Value = Z.Cells(r, u).Value + .SumIfs(QF, QC, "*" & stim & "*" _
, QD, kat)
Z.Cells(r, v).Value = Z.Cells(r, v).Value + .CountIfs(QC, "*" & stim & "*", _
QD, kat)
End If
End If
For y = 3 To t
rkat = Worksheets("Angaben").Range("E" & y).Value
w = w + 4
x = x + 4
If w > 14 And x > 16 Then
If .CountIfs(QC, "*" & stim & "*", QC, "*" & rkat & "*", QD, kat) > 0 Then
Z.Cells(r, w).Value = Z.Cells(r, w).Value + .SumIfs(QF, QC, "*" & stim & "*" _
, QC, "*" & rkat & "*", QD, kat)
Z.Cells(r, x).Value = Z.Cells(r, x).Value + .CountIfs(QC, "*" & stim & "*", _
QC, "*" & rkat & "*", QD, kat)
End If
End If
Next y
Next aa
End With
Next s
Next r
Set QC = Nothing: Set QD = Nothing: Set QF = Nothing: Set q = Nothing
End Sub
PS. Um zu verdeutlichen, wie das Ganze aussehen soll, habe ich hier einen Screenshot hochgeladen: http://666kb.com/i/dh1mwdis6qyh4rtjq.png