Randomly Assign Employees to Tasks

前端 未结 3 742
轻奢々
轻奢々 2021-01-21 14:35

This is a follow-up to a previous question that I had. I was provided an answer, but due to my own inexperience and inability, I can\'t seem to implement it properly.

My

3条回答
  •  离开以前
    2021-01-21 15:30

    I hope I understood it correctly:

    Sub AssignEmpl() 
        Dim TaskTable As Range, EmpTable As Range 
        Dim lRowT As Long, lRowE As Long, iCell As Range 
        lRowT = Worksheets("Test").Range("I" & Worksheets("Test").Rows.Count).End(xlUp).Row 
        lRowE = Worksheets("Test").Range("M" & Worksheets("Test").Rows.Count).End(xlUp).Row 
        ' Don't know what are actual ranges, modify 
        Set TaskTable = Worksheets("Test").Range("I6:K" & lRowT) 
        Set EmpTable = Worksheets("Test").Range("M6:M" & lRowE) 
        ' Starting loop 
        Do 
            ' Populate column with random nubmers between 1 and number of employees 
            ' 5 is a number of employees (essentialy lRowE - 5 or something like that) 
            TaskTable.Columns(3).Formula = "=RANDBETWEEN(1," & lRowE - 5 & ")" 
            ' Remove formula (so it doesn't recalculate) 
            TaskTable.Columns(3).Value = TaskTable.Columns(3).Value 
            ' Check if any number appears more than 2 times 
        Loop While Evaluate("AND(MAX(COUNTIF(" & TaskTable.Columns(3).Address & "," & TaskTable.Columns(3).Address & "))>2)") 
        '    Put these employee in there
        For Each iCell In TaskTable.Columns(3).Cells 
            iCell.Value = EmpTable.Cells(iCell.Value, 1) 
        Next 
    End Sub
    

提交回复
热议问题