Страница 1 из 1
макрос Exel: заполнить 1000 ячеек рандомом
Добавлено: 02 май 2006, 08:43
russian imigration
Вот тут задание в институте дали, а я что-то никак не найду нужные мне функции

Научился только через макросы записывать число в определенную ячейку (в цикле не получается). Помогите, пожалуйста, хотя бы нужные функции подскажите
1. В Exel в Книга1 в столбец А расположить числа от 1 до 1000 в произвольном порядке в ячейки от А1 до А1000.
2. В Книга2 в столбце А расположить все числа, заканчивающиеся на 7, по порядку Книги1. В столбце В написать номер строки, в которой это число на первом листе.
Добавлено: 02 май 2006, 10:45
Naeel Maqsudov
Код: Выделить всё
for i = 1 to 1000
cells(i,1).value=rnd*1000+1
next
Хотя, уточните - нужны просто случайные числа от 1 до 1000 или именно множество всех целых в интервале [1;1000], но взятые в произвольном порядке
Код: Выделить всё
j=1
for i = 1 to 1000
x=workbook("Книга1").Sheets("Лист1").cells(i,1) 'Взять из другой книги (это приблизительно - надо скорректировать по ситуации
if x mod 10 = 7 then cells(i,1).value=x 'Если заканчивается на 7 то положить в текущую книгу
Добавлено: 02 май 2006, 23:14
russian imigration
Благодарю. Вообще были нужны числа из множества от 1 до 1000, но с этим я сам примерно представляю как разобраться. Ключевыми для меня были cells(i,1), которые я никак не мог найти. Спасибо.
Добавлено: 12 май 2006, 14:13
russian imigration
Dim I, J As Integer
Dim N As Integer
Dim C As Boolean
Const R = 100
Sub A()
Clean
Task1
Task2
End Sub
Sub Task1()
For I = 1 To R
Sheets("Книга1").Cells(I, 25).Value = I
Next
For I = 1 To R
C = False
N = Round(Rnd * R + 1)
For J = 1 To R
If N = Sheets("Книга1").Cells(J, 25).Value Then
Sheets("ËКнига1").Cells(J, 25).Clear
Sheets("Книга1").Cells(I, 1).Value = N
C = True
End If
Next
If C = False Then
I = I - 1
End If
Next
End Sub
Sub Task2()
J = 0
For I = 1 To R
N = Sheets("Книга1").Cells(I, 1).Value
If N Mod 10 = 7 Then
J = J + 1
Sheets("Книга2").Cells(J, 1).Value = N
Sheets("Книга2").Cells(J, 2).Value = I
End If
Next
End Sub
Sub Clean()
For I = 1 To 1000
Sheets("Книга1").Cells(I, 1).Clear
Next
For J = 1 To 1000
Sheets("Книга2").Cells(J, 1).Clear
Sheets("Книга2").Cells(J, 2).Clear
Next
End Sub
Добавлено: 12 май 2006, 14:17
russian imigration
написал вот такой код. только разбрасывание 1000 чисел занимает 2 минуты. как можно исправить? уже больше недели думаю, но все идеи не особо ускоряют процесс