Страницы: 1
RSS
Распределение игроков по командам на основе пола и уровня
 
Коллеги, прошу помочь распределить список участников из 18 человек по 3 команды из 6 человек.
Есть колонка B - куда записываются игроки в случайном порядке
Необходимо определить игрока и исходя из его уровня (по 5-ти бальной шкале) и пола распределить его по командам.
В итоге должно получиться 3 команды, в каждой из которых должно быть равное кол-во человек по полу, а так же равный уровень в зависимости от пола.
во вложении исходная таблица
 
Через "Поиск решения"
 
MCH, спасибо, но как то не выходит.
если поменять уровень или ФИО, то список не измениться.
Так же количество не пропорциональное, если например игроков 15, то в каждой команде должно быть по 5
 
нашел файл, который ровно распределяет по командам, но осталось равномерно распределить по полу и уровню (поля красным отмечены).
так же есть ошибка, не могу ее отловить - одного игрока в команде пишет как "0"
Помогите пожалуйста
Изменено: kait3641 - 19.02.2019 16:23:05
 
Цитата
kait3641 написал:
Так же количество не пропорциональное,
А как соблюсти требование
Цитата
kait3641 написал:
должно быть равное кол-во человек по полу
Если
Цитата
kait3641 написал:
то в каждой команде должно быть по 5
Один с неопределенным полом?
 
Думаю, что сначала нужно распределить мужчин (м), а потом женщин (ж), т.е. по остаточному принципу
к примеру, если 15 чел. (из них 8 м и 7 ж), то должно быть так:
1 команда: 3м, 2ж;
2 команда: 3м, 2ж;  
3 команда: 2м, 3ж;    
и при этом соблюсти Уровень, т.е. средний уровень у всех команд должен быть равным
 
Цитата
kait3641 написал:
если поменять уровень или ФИО, то список не измениться
Потому что надо заново запустить "Поиск решения" и произвести перерасчет.
Почитайте, что это за надстройка. Гугл даст много примеров ее работы
 
Нашел в интернете файл, который делает наполовину того, что мне нужно.
Он распределяет игроков по командам по заданному параметру.
Но никак не могу включить дополнительные параметры для сортировки игроков.
Поля "Пол" и "Рейтинг".
Суть сортировки такая:
1. количество "ж" должно стремиться быть равной в каждой команде.
2. Рейтинг у "м" и "ж" должен стремиться быть равным в каждой команде.

Помогите пожалуйста разобраться, как это сделать.
 
Попробовал заточить под конкретику..
Код
Sub Заточка()
    Dim i&, j&, k&, n&, rm As Range, rd As Range, dc, vm(), vd(), t#
    Set rm = [G3:I11]: Set rd = [G12:I20]
    Application.ScreenUpdating = 0
t = Timer
return_:
    Set dc = CreateObject("Scripting.dictionary")
    [G3:I20].ClearContents
    With dc
        vm = rm.Value: vd = rd.Value
        Randomize

        For j = 1 To 3    ' по колонкам
            For i = 1 To 9    'по строкам мальчики
                If n = 3 Then Exit For    'только 3 мальчика
return1:
                k = Int(Rnd() * 9 + 1)
                If Not .exists(k) Then vm(k, j) = 1: .Item(k) = 1: n = n + 1 Else GoTo return1
            Next
            rm.Value = vm
            k = 0: n = 0
        Next
    End With

    Set dc = CreateObject("Scripting.dictionary")
    With dc
        For j = 1 To 3
            For i = 1 To 9
                If n = 3 Then Exit For    'только 3 девочки
return2:
                k = Int(Rnd() * 9 + 1)
                If Not .exists(k) Then vd(k, j) = 1: .Item(k) = 1: n = n + 1 Else GoTo return2
            Next
            rd.Value = vd
            k = 0: n = 0
        Next
    End With
    If Timer - t > 60 Then MsgBox "Повторим?": Set dc = Nothing: Exit Sub
    If [J25] > 0.5 Or [J26] > 0.5 Then GoTo return_
    Set dc = Nothing
End Sub
Изменено: Маугли - 21.02.2019 14:09:20
 
Маугли, спасибо огромное!
Работает!
Надеюсь этот макрос будет работать в docs.google.com  
 
Добрый день. Пытаюсь переработать предложенный вариант решения подобной задачи. Только начала изучать макросы, пока не получается разобраться до конца.
У меня суть задачи следующая: только фамилия и рейтинг. Нужно сформировать не три, а четыре команды без учитывания пола. Так, чтобы число участников в командах было равным и мастерство также максимально равным. Мне очень понравился вариант с кнопкой, когда по нажатию происходила перераспределние 1 и 0. Я добавила 4 столбец, но он игнорируется при нажатии на кнопку. В "поиск решения" я указала следующие правила (скрин во вложении).
Идея, чтобы при нажатии на кнопку значения 1 и 0 менялись. Соответственно будут пересчитываться суммарные рейтинги по команде и будет найдено то значение, которое пользователь сочтёт оптимальным.
 
Задача другая. Создайте тему с названием, отражающим суть задачи. Прикрепите небольшой пример в  формате Excel
Страницы: 1
Наверх