Есть 3 значения - 1,X,2. Есть столбцы, которые частично заполнены этими значениями вручную.
Так вот. Как сделать макрос, назначенный на отдельную кнопку, чтобы он в случайном порядке заполнил пустые ячейки в этих в столбцах, а те, которые я изначально заполнил остались не тронутыми.
То есть, проще говоря, какие-то ячейки в столбце я заполнил вручную, а остальные ячейки, при нажатии на кнопку, заполнились в случайном порядке.
Есть 3 значения - 1,X,2. Есть столбцы, которые частично заполнены этими значениями вручную.
Так вот. Как сделать макрос, назначенный на отдельную кнопку, чтобы он в случайном порядке заполнил пустые ячейки в этих в столбцах, а те, которые я изначально заполнил остались не тронутыми.
То есть, проще говоря, какие-то ячейки в столбце я заполнил вручную, а остальные ячейки, при нажатии на кнопку, заполнились в случайном порядке.staff10207
staff10207, так подойдет? Вместо Ваших 2-х макросов Random5, Random25 - один. Кнопки "Область" и "Все" переименовала. Заполняет только видимые ячейки, т.е. для 10 купонов заполнится диапазон M2:V16 [vba]
Код
Sub generate() Randomize Dim arr: arr = Array(1, 2, "x") Dim cell As Range Dim rng As Range If Application.Caller = "btn_region" Then Set rng = Selection ElseIf Application.Caller = "btn_all" Then Set rng = Range("M2:AK16").SpecialCells(12) End If For Each cell In rng If cell = "" Then cell = arr(Int(3 * Rnd)) Next cell End Sub
[/vba]
staff10207, так подойдет? Вместо Ваших 2-х макросов Random5, Random25 - один. Кнопки "Область" и "Все" переименовала. Заполняет только видимые ячейки, т.е. для 10 купонов заполнится диапазон M2:V16 [vba]
Код
Sub generate() Randomize Dim arr: arr = Array(1, 2, "x") Dim cell As Range Dim rng As Range If Application.Caller = "btn_region" Then Set rng = Selection ElseIf Application.Caller = "btn_all" Then Set rng = Range("M2:AK16").SpecialCells(12) End If For Each cell In rng If cell = "" Then cell = arr(Int(3 * Rnd)) Next cell End Sub
Manyasha, Спасибо. Подходит. Но у меня было, при повторном кликании на кнопку "Все" заново менялся порядок, а в вашей формуле, если ячейки уже заполнены, то рандом уже не работает. Это можно как-то исправить?
Manyasha, Спасибо. Подходит. Но у меня было, при повторном кликании на кнопку "Все" заново менялся порядок, а в вашей формуле, если ячейки уже заполнены, то рандом уже не работает. Это можно как-то исправить?staff10207
Sub generate() Randomize Dim arr: arr = Array(1, 2, "x") Dim cell As Range Dim rng As Range If Application.Caller = "btn_region" Then Set rng = Selection ElseIf Application.Caller = "btn_all" Or Application.Caller = "btn_all2" Then Set rng = Range("M2:AK16").SpecialCells(12) End If For Each cell In rng If (cell = "" And Application.Caller = "btn_all2") Or Application.Caller <> "btn_all2" Then cell = arr(Int(3 * Rnd)) Next cell End Sub
[/vba]
staff10207, тогда 3-я кнопка нужна? [vba]
Код
Sub generate() Randomize Dim arr: arr = Array(1, 2, "x") Dim cell As Range Dim rng As Range If Application.Caller = "btn_region" Then Set rng = Selection ElseIf Application.Caller = "btn_all" Or Application.Caller = "btn_all2" Then Set rng = Range("M2:AK16").SpecialCells(12) End If For Each cell In rng If (cell = "" And Application.Caller = "btn_all2") Or Application.Caller <> "btn_all2" Then cell = arr(Int(3 * Rnd)) Next cell End Sub