макрос Exel: заполнить 1000 ячеек рандомом

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
russian imigration
Сообщения: 34
Зарегистрирован: 02 май 2006, 08:31
Контактная информация:

Вот тут задание в институте дали, а я что-то никак не найду нужные мне функции :( Научился только через макросы записывать число в определенную ячейку (в цикле не получается). Помогите, пожалуйста, хотя бы нужные функции подскажите

1. В Exel в Книга1 в столбец А расположить числа от 1 до 1000 в произвольном порядке в ячейки от А1 до А1000.
2. В Книга2 в столбце А расположить все числа, заканчивающиеся на 7, по порядку Книги1. В столбце В написать номер строки, в которой это число на первом листе.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Код: Выделить всё

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 то положить в текущую книгу
russian imigration
Сообщения: 34
Зарегистрирован: 02 май 2006, 08:31
Контактная информация:

Благодарю. Вообще были нужны числа из множества от 1 до 1000, но с этим я сам примерно представляю как разобраться. Ключевыми для меня были cells(i,1), которые я никак не мог найти. Спасибо.
russian imigration
Сообщения: 34
Зарегистрирован: 02 май 2006, 08:31
Контактная информация:

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
russian imigration
Сообщения: 34
Зарегистрирован: 02 май 2006, 08:31
Контактная информация:

написал вот такой код. только разбрасывание 1000 чисел занимает 2 минуты. как можно исправить? уже больше недели думаю, но все идеи не особо ускоряют процесс
Ответить