Excel 要分配给X个人数的记录列表

Excel 要分配给X个人数的记录列表,excel,excel-formula,vba,Excel,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 考虑到您的评论,如果案例在A1中,三个人的名字在F2:F4中,即在第4列中,请尝试在B2中,并复制下来以适合: =OFFSET(B$2,INT(ROW()-2)/COUNTA(F:F)-CO

我有一份记录单,我想平均分配给三个人

例如,对于15条记录,要分成三个人,分别是XYZ、PQR和ABC:

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

考虑到您的评论,如果案例在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)
您有一个案例列表,这些案例将在一组人员中“平均”分配。 但是,如果案例数量是人员数量的精确倍数,则只能“平均”分配案例,否则剩余案例将按照人员列表中的顺序分配,即,如果您有31个案例要分配给4个人,那么三个人将有8个案例,而剩下的一个人将收到7个案例

假设案例列表(包括标题)位于B6:B40,同时具有标题的人员列表位于G6:G10,并且空白记录(如果有)位于每个列表的末尾。这些公式适用于编码为数字或字母的情况

要将案例逐个分配给每个人,请输入范围为C7:C40的以下公式数组 同时按[Ctrl]+[Shift]+[Enter]可输入公式数组

图1

要使用示例数据中显示的模式分配案例,我们首先需要在人员列表中添加一个字段,以计算案例的分布。这使得分配人员的公式更易于阅读、维护和缩短。在单元格H6中输入字段名计数,然后在范围H7:H10中输入以下公式数组:

图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)))),"")

图3

公式、代码、逻辑方法,如有任何帮助,敬请谅解。谢谢你的帮助。好好看看,从你的数据中不清楚你想要什么。这不是一个获取代码的地方,而是供其他人帮助您完成迄今为止所做的工作的地方。如果您概述一些代码,然后在最后一段中寻求帮助,您将获得更多帮助。
=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)
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)))),"")