Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 20:39   #1
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию разнести числа по пустым ячейкам рандомно

привет всем)

дано: столбец частично заполнен вариантами ответов (варианты 1,2 или 3)
надо: РАНДОМНО заполнить пустые ячейки в столбце (в таблице) согласно заданному проценту
снизу подписано сколько процентов каждого варианта надо внести

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

пример прилагаю: Внести_в_пустые_рандомно.rar
Bape}l{ka вне форума Ответить с цитированием
Старый 06.05.2012, 21:48   #2
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

не понял, что нужно
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 06.05.2012, 22:38   #3
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

т.е. нужно заполнить процент пустых ячеек данным вариантом/числом (вариант и процент подписаны под таблицей)

в частности у нас 5 незаполненных ячеек, и снизу написано 1=50 (т.е. в 50% незаполненных ячеек надо поставить цифру 1), но не подряд ставить 1 в пустые ячейки, а рандомно заполнять
Bape}l{ka вне форума Ответить с цитированием
Старый 06.05.2012, 23:09   #4
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Bape}l{ka, используйте функцию Rnd.
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 06.05.2012, 23:18   #5
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

про Rnd я знаю, я не знаю, как заполнить ячейки, т.к. они не являются смежным диапазоном... использовать Area?
Bape}l{ka вне форума Ответить с цитированием
Старый 07.05.2012, 00:10   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

заполняйте по одной.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 07.05.2012, 00:41   #7
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

IgorGO, я не понимаю как это сделать, могли бы вы написать пример, желательно на мое случае
Bape}l{ka вне форума Ответить с цитированием
Старый 07.05.2012, 04:12   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub InsRndVal()
  Dim c As Range, v As Integer, r As Range
  Randomize: Set r = [b2:b12]
  For Each c In r.SpecialCells(xlCellTypeBlanks)
    Do
      v = 1 + Int(3 * Rnd)
    Loop Until (WorksheetFunction.CountIf(r, v) + 1) / (r.Count + 1) <= r.Resize(1, 1).Offset(r.Count + v, 0)
    c = v
  Next
End Sub
там где у Вас было написано 1=50, 2=33, 3=17 я написал 0.5, 0.33, 0.17
в колонке № две тройки специально было написано?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 07.05.2012, 09:07   #9
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

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

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

Код:
Sub random()

Range("B2:E5").Select

Randomize

'koeficient to determine steps quantity for values randomization
koef = 1.5

x = Selection.Rows.Count
y = Selection.Columns.Count

For i = 0 To Int(x * y * koef)
rndX1 = Int((x * Rnd) + 1)
rndX2 = Int((x * Rnd) + 1)
rndY1 = Int((y * Rnd) + 1)
rndY2 = Int((y * Rnd) + 1)

tmp_value = Selection.Cells(rndX1, rndY1).Value
Selection.Cells(rndX1, rndY1).Value = Selection.Cells(rndX2, rndY2).Value
Selection.Cells(rndX2, rndY2).Value = tmp_value

Next i

End Sub
0
Bape}l{ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel открывается пустым! Arkaban Microsoft Office Excel 18 30.05.2017 13:59
разнести подчиненные формы по вкладкам access user Microsoft Office Access 1 17.07.2011 18:02
Разнести данные tgm Microsoft Office Excel 8 04.02.2011 23:55
проблема с пустым edit'ом SMERSH Помощь студентам 2 15.09.2008 19:26
Разнести информацию на разные листы asale Microsoft Office Excel 3 13.06.2007 20:16