![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - макрос для генерации значений по условиям |
|
2010 - макрос для генерации значений по условиям
|
Пользователь Сообщения: 77 |
Помогите, пожалуйста на VBA написать один скрипт, который генерирует значения по определенным условиям:
Например Пусть есть переменные и их значения a,b,c пол X1,X2,X3 м a a a ж b b b ж c c c Нужно сгенирировать значения, но так, чтобы соблюдались пропорции только в случайном порядке: например 30% мужчин в переменной X1 поставили ответ а, 40% мужчин поставили ответ b и ещё 30% мужчин поставили ответ с при этом 20% женщин в переменной X1 поставили ответ а, 65% женщин поставили ответ b и ещё 25% женщин поставили ответ с Аналогично и с другими переменными, их может быть несколько. Надо просто чтобы в самом годе было написано пол=200 человек переменная x1, пусть имеет пять градаций а,б,в,г,Д градация а=5%мужчин, 25%женищин. градация б=10% мужчин и 45% женщин ... Помогите, плиз такое сделать. |
|
Отправлено: 10:28, 29-11-2015 |
Динохромный Сообщения: 712
|
Профиль | Отправить PM | Цитировать Цитата Elizavetta:
|
|
------- Отправлено: 11:22, 02-12-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать a_axe, вы верно поняли.
|
Отправлено: 11:53, 02-12-2015 | #12 |
Динохромный Сообщения: 712
|
Профиль | Отправить PM | Цитировать Elizavetta, могу предложить код с оговорками:
1.Могу ошибаться, генераторы случайных чисел подчиняются-таки определенным законам. Вероятно, с небольшими наборами данных это не будет прослеживаться, но в рамках конкретного алгоритма какое получается распределение - вопрос открытый. 2.Программа дает близкое соотношение по процентам, но не точное. Кроме того, для каждого вопроса после окончания работы скрипта возможно наличие одной незаполненной ячейки. Добивать алгоритм смысла не вижу (откровенно говоря - лень), раз вопрос по статистике - вероятно в любом случае будет нужно что-нибудь подправлять руками. Пустые ячейки легко отследить фильтром по таблице1 и устранить. 3. Таблица1 должна быть пустой - заполнение выполняется только в незаполненные ячейки. Алгоритм работы следующий: 1. Вашу таблицу с ответами необходимо отформатировать как таблицу (сочетание клавиш ctrl+L). Называться она должна "Таблица1" (Название можно привести в соответствие с помощью диспетчера имен вкладки "Формулы"). Скрин Таблицы1 и диспетчера имен
![]() 2. Необходимо создать в произвольном месте того же листа еще одну таблицу с картой ответов. Называться она должна "Таблица2". Названия заголовков непринципиальны, но содержание должно четко соответствовать Таблице1 по названию категорий и вопросов, т.е. если в Таблице2 фигурирует "Категория 3", значит она должна быть и в Таблице1, или если названия вопросов Х1 написаны как английское "икс", то в другой таблице не должно быть русское "хэ". В таблице указываете для каждой категории название вопроса, один из вариантов ответа и процент ответа в десятых долях от единицы. Можно заполнить не все категории - отработают только заполненные категории. Скрин Таблицы 2 (карты ответов)
![]() Собственно код
Public Sub Sociology() Dim i As Long, j As Long, n As Long, Nkat As Long, m As Long Dim Kat As String, Kat_old As String Dim quest As String Dim answ As String Dim Perc As Double Dim cell As Range Randomize On Error Resume Next For i = 1 To Range("Таблица2").Rows.Count Kat = Range("Таблица2").Cells(i, 1).Value quest = Range("Таблица2").Cells(i, 2).Value answ = Range("Таблица2").Cells(i, 3).Value Perc = Range("Таблица2").Cells(i, 4).Value ActiveSheet.ListObjects("Таблица1").Range.AutoFilter Field:=1, Criteria1:=Kat Range("Таблица1[" & quest & "]").SpecialCells(xlCellTypeBlanks).Select Selection.SpecialCells(xlCellTypeVisible).Select 'Debug.Print "выделено " & Selection.Count If Kat <> Kat_old Then Nkat = Selection.Count Kat_old = Kat End If m = 0 Do n = Selection.Count n = Round(n * Rnd()) If n = 0 Then n = 1 j = 0 For Each cell In Selection j = j + 1 If j = n Then cell.Value = answ m = m + 1 Exit For End If Next cell Range("Таблица1[" & quest & "]").SpecialCells(xlCellTypeBlanks).Select Selection.SpecialCells(xlCellTypeVisible).Select Loop Until m >= Nkat * Perc Or Err.Number <> 0 'Debug.Print "err=" & Err.Number & ", m=" & m & ",Nkat*perc=" & Nkat * Perc & ",j=" & j Err.Clear ActiveSheet.ListObjects("Таблица1").Range.AutoFilter Field:=1 Next i Range("Таблица2").Select End Sub |
Отправлено: 12:21, 03-12-2015 | #13 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Переименование файла по условиям | bombording | Скриптовые языки администрирования Windows | 1 | 24-03-2014 16:17 | |
CMD/BAT - Поиск и удаление строк в файле по сложным условиям | i7allia | Скриптовые языки администрирования Windows | 2 | 30-10-2013 17:06 | |
PowerShell - Find по разным условиям | dosperados | Скриптовые языки администрирования Windows | 7 | 07-02-2012 12:14 | |
fpdf класс для генерации pdf с помощью php | zvezda_t | Вебмастеру | 0 | 29-09-2010 09:06 | |
Вопрос - Программы для генерации и хранения паролей | SashaKl | Защита компьютерных систем | 13 | 08-10-2009 15:44 |
|