分配给X个人的记录列表

时间:2015-10-01 10:00:12

标签: excel excel-vba excel-formula vba

我有记录列表,我想同样分配给三个人(例如)。

例如,有15条记录,分成三个名为XYZ,PQR和ABC的人:

Case  Name
123   XYZ
124   XYZ
135   XYZ
138   ABC
145   ABC
167   ABC
258   PQR
259   PQR
260   PQR

2 个答案:

答案 0 :(得分:0)

考虑到您的评论,如果Case在A1中且三个人的名字在F2:F4(即第4列)中,请尝试使用B2并复制以适应:

=OFFSET(B$2,INT(ROW()-2)/COUNTA(F:F)-COUNTA(F:F)*INT((ROW()-2)/COUNTA(F:F)^2),4)

答案 1 :(得分:0)

您有一个Cases的列表,要在People池中分配“同等”。 但是,Cases只能分配“同等”是他们的号码是People号码的精确倍数,否则剩余案例将按订单分配在人员名单中,即如果你有4个案件分配给4个案件,那么3个人将有8个案件,而剩下的个人将有7个案件。

假设Cases (包括标题)的列表位于B6:B40People 列表(也带标题)位于G6:G10,空白记录(如果有)位于每个列表的末尾。 (这些公式适用于编码为数字或字母的案例)

  1. 要逐个为每个人分配案例,请在FormulaArray范围内输入以下C7:C40 (通过同时按[Ctrl] + [Shift] + [Enter]输入公式数组)

    =IF($B$7:$B$40="","",INDEX($G$7:$G$10,
    1+MOD(-1+COUNTA($G$7:$G$10)
    +(1+ROW($B$7:$B$40)-ROW($B$7)),
    COUNTA($G$7:$G$10))))
    
  2. enter image description here

    图。 1

    1. 要使用样本数据中显示的模式分配案例,我们首先需要在人员列表中添加一个字段,以便计算案例的分布(这使得公式可以分配人员更容易阅读,维护和更短)。在单元格H6中输入字段名称Count,然后在范围H7:H10中输入此FormulaArray

      =IF($G$7:$G$10="","",
      INT(COUNTA($B$7:$B$40)/COUNTA($G$7:$G$10))
      +((1+ROW($G$7:$G$10)-ROW($G$7))<=
      MOD(COUNTA($B$7:$B$40),COUNTA($G$7:$G$10)))*1)
      
    2. enter image description here

      图。 2

      Then enter this `FormulaArray` in `E7` and copy to the end of the range.
      
          =IFERROR(IF($B7="","",
          IF(COUNTIF($G$7:$G$10,$E6)=0,
          INDEX($G$7:$G$10,MATCH(0,COUNTIF(E$6:E6,$G$7:$G$10),0)*1),
          IF(COUNTIF($E$6:$E6,$E6)<INDEX($H$7:$H$10,MATCH($E6,$G$7:$G$10,0)),$E6,
          INDEX($G$7:$G$10,MATCH(0,COUNTIF(E$6:E6,$G$7:$G$10),0)*1)))),"")
      

      enter image description here

      图。 3