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

Вход

Регистрация

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

 

= Мир MS Excel/Рандомный выбор в ячейках с заданным списком-Проверка данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Рандомный выбор в ячейках с заданным списком-Проверка данных (Макросы/Sub)
Рандомный выбор в ячейках с заданным списком-Проверка данных
abtextime Дата: Среда, 18.07.2018, 14:22 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
Коллеги, наскоком не разобрался, помогайте!

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

Заранее благодарю!

P.S. Готовый макрос не обязателен, дайте направление, куда копать :) 1) признак такой ячейки, 2) диапазон Списка ... Дальше уж я с Божьей помощью сам :)


Сообщение отредактировал abtextime - Среда, 18.07.2018, 14:57
 
Ответить
СообщениеКоллеги, наскоком не разобрался, помогайте!

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

Заранее благодарю!

P.S. Готовый макрос не обязателен, дайте направление, куда копать :) 1) признак такой ячейки, 2) диапазон Списка ... Дальше уж я с Божьей помощью сам :)

Автор - abtextime
Дата добавления - 18.07.2018 в 14:22
_Boroda_ Дата: Среда, 18.07.2018, 14:49 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Dim d_ As Range, s_ As Range
    For Each d_ In Cells(1).SpecialCells(xlCellTypeAllValidation)'это F5 - Выделить - Проверка данных
        Set s_ = Range(d_.Validation.Formula1)' это диапазон
        d_ = s_(Int(Rnd * s_.Count + 1))
    Next d_
[/vba]

*Добавлено
Готовый макрос не обязателен

Поздно
Комментарии дописал

*Добавлено 2
Там проверки всякие еще нужно - на то, что тип данных "список", на то, что этот список из диапазона, на его корректность, ...


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Dim d_ As Range, s_ As Range
    For Each d_ In Cells(1).SpecialCells(xlCellTypeAllValidation)'это F5 - Выделить - Проверка данных
        Set s_ = Range(d_.Validation.Formula1)' это диапазон
        d_ = s_(Int(Rnd * s_.Count + 1))
    Next d_
[/vba]

*Добавлено
Готовый макрос не обязателен

Поздно
Комментарии дописал

*Добавлено 2
Там проверки всякие еще нужно - на то, что тип данных "список", на то, что этот список из диапазона, на его корректность, ...

Автор - _Boroda_
Дата добавления - 18.07.2018 в 14:49
abtextime Дата: Среда, 18.07.2018, 14:55 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, да, Саша, спасибо большое!

Всё работает (а разве могло быть иначе hands )

Если можно, я файлик удалю из стартового поста, а то там коммерческая информация. Ок?
 
Ответить
Сообщение_Boroda_, да, Саша, спасибо большое!

Всё работает (а разве могло быть иначе hands )

Если можно, я файлик удалю из стартового поста, а то там коммерческая информация. Ок?

Автор - abtextime
Дата добавления - 18.07.2018 в 14:55
RAN Дата: Среда, 18.07.2018, 15:01 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub q()
    Dim ar, i&
    ar = Range(ActiveCell.Validation.Formula1).Value
    Randomize
    i = Int((UBound(ar) - LBound(ar) + 1) * Rnd + LBound(ar))
    ActiveCell.Value = ar(i, 1)
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Sub q()
    Dim ar, i&
    ar = Range(ActiveCell.Validation.Formula1).Value
    Randomize
    i = Int((UBound(ar) - LBound(ar) + 1) * Rnd + LBound(ar))
    ActiveCell.Value = ar(i, 1)
End Sub
[/vba]

Автор - RAN
Дата добавления - 18.07.2018 в 15:01
abtextime Дата: Среда, 18.07.2018, 15:08 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
RAN, спасибо большое!

Еще один кусочек VBA стал понятным :)

P.S. Только Вы для активной ячейки выбор сделали, а Александр - точнее - цикл по всему ячейкам такого типа. Но, конечно же, завернуть ваш Sub в цикл не составляет труда. Благодарю.


Сообщение отредактировал abtextime - Среда, 18.07.2018, 15:14
 
Ответить
СообщениеRAN, спасибо большое!

Еще один кусочек VBA стал понятным :)

P.S. Только Вы для активной ячейки выбор сделали, а Александр - точнее - цикл по всему ячейкам такого типа. Но, конечно же, завернуть ваш Sub в цикл не составляет труда. Благодарю.

Автор - abtextime
Дата добавления - 18.07.2018 в 15:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Рандомный выбор в ячейках с заданным списком-Проверка данных (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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