Предположим, у меня есть столбец значений
1
2
3
4
5
Я пытаюсь написать функцию VBA, в которой на основе того, какое число я выбрал (n), ячейки будут зацикливаться на этой позиции.Скажем, я выбрал 3
Тогда новый список будет
4
5
1
2
3
То, что я сделал, основано на каждом номере строки, я пытался разработать правила для перемещения ячеек, но это неКажется, это не работает .. Я подозреваю, что это потому, что я использую activerow, а не относительную позицию строки, но я не уверен, что синтаксис для относительной строки.Может ли кто-нибудь помочь мне
Option Explicit
Option Base 1
Function DivisibleByN(rng As Range, n As Integer) As Variant
Dim i As Integer, j As Integer
Dim nr As Integer, nc As Integer
Dim B() As Variant
Dim r As ListRow
nr = rng.Rows.Count
nc = rng.Columns.Count
r = ActiveCell.Row
ReDim B(nr, nc) As Variant
For i = 1 To nr
For j = 1 To nc
If r = 1 And r < n Then
B(nr - (n - 1), j) = rng.Cells(i, j)
ElseIf r > 1 And r < n Then
B(nr - (n - r), j) = rng.Cells(i, j)
ElseIf r > n Then
B(r - n, j) = rng.Cells(i, j)
ElseIf r = n Then
B(r, j) = rng.Cells(i, j)
End If
Next j
Next i
DivisibleByN = B
End Function