Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос случайного заполнения с условием - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос случайного заполнения с условием (Макросы/Sub)
Макрос случайного заполнения с условием
staff10207 Дата: Четверг, 10.12.2015, 21:51 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Есть 3 значения - 1,X,2. Есть столбцы, которые частично заполнены этими значениями вручную.

Так вот. Как сделать макрос, назначенный на отдельную кнопку, чтобы он в случайном порядке заполнил пустые ячейки в этих в столбцах, а те, которые я изначально заполнил остались не тронутыми.

То есть, проще говоря, какие-то ячейки в столбце я заполнил вручную, а остальные ячейки, при нажатии на кнопку, заполнились в случайном порядке.
К сообщению приложен файл: 9846852.xlsm (47.0 Kb)
 
Ответить
СообщениеЕсть 3 значения - 1,X,2. Есть столбцы, которые частично заполнены этими значениями вручную.

Так вот. Как сделать макрос, назначенный на отдельную кнопку, чтобы он в случайном порядке заполнил пустые ячейки в этих в столбцах, а те, которые я изначально заполнил остались не тронутыми.

То есть, проще говоря, какие-то ячейки в столбце я заполнил вручную, а остальные ячейки, при нажатии на кнопку, заполнились в случайном порядке.

Автор - staff10207
Дата добавления - 10.12.2015 в 21:51
Roman777 Дата: Четверг, 10.12.2015, 22:23 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
staff10207, Добрый вечер, что-то типа такого:
[vba]
Код
Sub generate()
Dim rng As Range
For Each rng In Range("M2:V16")
  If rng = "" Then rng = Int((9 * Rnd) + 1)
Next rng
End Sub
[/vba]
Это для чисел от 1 до 9. До какого номинала отвечает цифра 9 в Int((9 * Rnd).


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Четверг, 10.12.2015, 22:24
 
Ответить
Сообщениеstaff10207, Добрый вечер, что-то типа такого:
[vba]
Код
Sub generate()
Dim rng As Range
For Each rng In Range("M2:V16")
  If rng = "" Then rng = Int((9 * Rnd) + 1)
Next rng
End Sub
[/vba]
Это для чисел от 1 до 9. До какого номинала отвечает цифра 9 в Int((9 * Rnd).

Автор - Roman777
Дата добавления - 10.12.2015 в 22:23
staff10207 Дата: Четверг, 10.12.2015, 23:56 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Roman777, Числа генерирует, а как же быть с текстом? Ведь у меня значения 1,2,X
 
Ответить
СообщениеRoman777, Числа генерирует, а как же быть с текстом? Ведь у меня значения 1,2,X

Автор - staff10207
Дата добавления - 10.12.2015 в 23:56
Manyasha Дата: Пятница, 11.12.2015, 09:58 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
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]
К сообщению приложен файл: 9846852-1.xlsm (42.7 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение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]

Автор - Manyasha
Дата добавления - 11.12.2015 в 09:58
staff10207 Дата: Пятница, 11.12.2015, 15:54 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Manyasha, Спасибо. Подходит. Но у меня было, при повторном кликании на кнопку "Все" заново менялся порядок, а в вашей формуле, если ячейки уже заполнены, то рандом уже не работает. Это можно как-то исправить?
 
Ответить
СообщениеManyasha, Спасибо. Подходит. Но у меня было, при повторном кликании на кнопку "Все" заново менялся порядок, а в вашей формуле, если ячейки уже заполнены, то рандом уже не работает. Это можно как-то исправить?

Автор - staff10207
Дата добавления - 11.12.2015 в 15:54
Manyasha Дата: Пятница, 11.12.2015, 16:58 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
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
[/vba]
К сообщению приложен файл: 9846852-2.xlsm (42.9 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение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
[/vba]

Автор - Manyasha
Дата добавления - 11.12.2015 в 16:58
staff10207 Дата: Пятница, 11.12.2015, 17:17 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В принципе подходит, но почему-то когда переношу ваш код в свой файл и кликаю на одну из 3-х этих кнопок, то выдает такое. В чем проблема?


 
Ответить
СообщениеВ принципе подходит, но почему-то когда переношу ваш код в свой файл и кликаю на одну из 3-х этих кнопок, то выдает такое. В чем проблема?



Автор - staff10207
Дата добавления - 11.12.2015 в 17:17
RAN Дата: Пятница, 11.12.2015, 17:45 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Покажите файлик.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПокажите файлик.

Автор - RAN
Дата добавления - 11.12.2015 в 17:45
staff10207 Дата: Пятница, 11.12.2015, 17:55 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, А всё, уже нормально. Разобрался.
 
Ответить
СообщениеRAN, А всё, уже нормально. Разобрался.

Автор - staff10207
Дата добавления - 11.12.2015 в 17:55
staff10207 Дата: Пятница, 11.12.2015, 23:59 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, вроде исправил. но опять ошибка. Можете пожалуйста глянуть? Кнопки "Область", "Все", "Пустые" выдают одну ошибку.
К сообщению приложен файл: 5149751.xlsm (44.8 Kb)


Сообщение отредактировал staff10207 - Суббота, 12.12.2015, 00:20
 
Ответить
СообщениеRAN, вроде исправил. но опять ошибка. Можете пожалуйста глянуть? Кнопки "Область", "Все", "Пустые" выдают одну ошибку.

Автор - staff10207
Дата добавления - 11.12.2015 в 23:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос случайного заполнения с условием (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!