Добрый день, уважаемые знатоки VB! Вот для вас задачка, которая не составит сложности в отличие от меня
Есть база значений, нужно в первой колонке продублировать 7 раз значение из базы, во второй колонке 7 раз по рандому вставить следующие значения, но за исключением первого. И далее следующее. (Значения не обязательно отличаются по порядку, как 01.. 02.. бывает 34393 затем 34507 ).
Это мой новый список, который я хотел бы уже куда-то вставить и получить на выходе 7 первых значений в каждой строке, напротив которых рандомное значение за исключением текущего. И далее следующее значение.
Добрый день, уважаемые знатоки VB! Вот для вас задачка, которая не составит сложности в отличие от меня
Есть база значений, нужно в первой колонке продублировать 7 раз значение из базы, во второй колонке 7 раз по рандому вставить следующие значения, но за исключением первого. И далее следующее. (Значения не обязательно отличаются по порядку, как 01.. 02.. бывает 34393 затем 34507 ).
Это мой новый список, который я хотел бы уже куда-то вставить и получить на выходе 7 первых значений в каждой строке, напротив которых рандомное значение за исключением текущего. И далее следующее значение.nikfedorov
Sub rand() Dim o() As String Dim i As Long, j As Long Dim n As Long, k As Long Dim numb As Long Dim a a = Range(cells(1, 1), cells(18, 1)) n = UBound(a, 1) ReDim o(n) For i = 1 To n o(i) = a(i, 1) Next i Dim o1() As String ReDim o1(n - 1) For i = 1 To n k = 0 For j = 1 To n If (j <> i) Then k = k + 1 o1(k) = o(j) End If Next j For j = 1 To 7 cells((i - 1) * 7 + j, 5) = o(i) Randomize numb = Int((n - 1) * rnd()) + 1 cells((i - 1) * 7 + j, 6) = o1(numb) Next j Next i End Sub
[/vba]
nikfedorov, Такое надо? [vba]
Код
Sub rand() Dim o() As String Dim i As Long, j As Long Dim n As Long, k As Long Dim numb As Long Dim a a = Range(cells(1, 1), cells(18, 1)) n = UBound(a, 1) ReDim o(n) For i = 1 To n o(i) = a(i, 1) Next i Dim o1() As String ReDim o1(n - 1) For i = 1 To n k = 0 For j = 1 To n If (j <> i) Then k = k + 1 o1(k) = o(j) End If Next j For j = 1 To 7 cells((i - 1) * 7 + j, 5) = o(i) Randomize numb = Int((n - 1) * rnd()) + 1 cells((i - 1) * 7 + j, 6) = o1(numb) Next j Next i End Sub
Если это не будет большой наглостью с моей стороны, можете сделать более гибкое решение? В следующий раз я могу получить 5 или 50 строк значений для перелинковки. Если бы макрос шел по столбику пока он не закончится (или как-то понимал, что сегодня 4 строки, вместо прошлых 20ти) - будет супер!
Если это не будет большой наглостью с моей стороны, можете сделать более гибкое решение? В следующий раз я могу получить 5 или 50 строк значений для перелинковки. Если бы макрос шел по столбику пока он не закончится (или как-то понимал, что сегодня 4 строки, вместо прошлых 20ти) - будет супер! nikfedorov
Sub rand() Dim o() As String Dim i As Long, j As Long Dim n As Long, k As Long Dim numb As Long Dim a a = Range(cells(1, 1), cells(cells(rows.count,1).end(xlUp).row, 1)) n = UBound(a, 1) ReDim o(n) For i = 1 To n o(i) = a(i, 1) Next i Dim o1() As String ReDim o1(n - 1) For i = 1 To n k = 0 For j = 1 To n If (j <> i) Then k = k + 1 o1(k) = o(j) End If Next j For j = 1 To 7 cells((i - 1) * 7 + j, 5) = o(i) Randomize numb = Int((n - 1) * rnd()) + 1 cells((i - 1) * 7 + j, 6) = o1(numb) Next j Next i End Sub
[/vba]
Возможно, понял, о чем речь: [vba]
Код
Sub rand() Dim o() As String Dim i As Long, j As Long Dim n As Long, k As Long Dim numb As Long Dim a a = Range(cells(1, 1), cells(cells(rows.count,1).end(xlUp).row, 1)) n = UBound(a, 1) ReDim o(n) For i = 1 To n o(i) = a(i, 1) Next i Dim o1() As String ReDim o1(n - 1) For i = 1 To n k = 0 For j = 1 To n If (j <> i) Then k = k + 1 o1(k) = o(j) End If Next j For j = 1 To 7 cells((i - 1) * 7 + j, 5) = o(i) Randomize numb = Int((n - 1) * rnd()) + 1 cells((i - 1) * 7 + j, 6) = o1(numb) Next j Next i End Sub