Я полагаю, что проблема заключается в том, как вы выполняете итерацию. Например, если я беру параметры N = 32 и мой sample_count равен 8 и анализирую цикл, используя
Do While i + 2 * sample_count < N
i = i + sample_count
j = j + 1
Debug.Print "@ iteration " & j & " i = " & i & vbCrLf; "i + 2 * sample_count = " & i + 2 * sample_count & " < " & N
Loop
Я получаю
iteration 1 i = 8
i + 2 * sample_count = 24 < 32
iteration 2 i = 16
i + 2 * sample_count = 32 < 32
Таким образом, я получаю только 2 из 4 моих выборочных групп. При этом, предполагая, что вы хотите .Offset with sample_count, я думаю, что вы могли бы эффективно достичь того, что вы ищете, заменив цикл Do While Loop на
For i = 0 To N Step sample_count
Set rX = r.Offset(i, 4).Resize(sample_count, 1)
Set ry = r.Offset(i, 0).Resize(sample_count, 1)
rsquare = Application.WorksheetFunction.RSq(ry, rX)
r.Offset(i + sample_count, 7).Value = rsquare
End Sub