Tracy.Liu 发表于 2019-1-23 16:21:18

帮你打开活字格更神奇的功能:六十一,业务员随机分配功能

本帖最后由 Tracy.Liu 于 2019-1-23 16:21 编辑

最近我们工程师脑洞大开做了这么一个小功能,业务员的随机分配。

大致应用场景是这样的,比如我们现在有三个业务员Simon、Eric和Tracy,然后有10位客户。现在我们希望给每一位客户随机分配一位业务员。当然每个业务员可分配次数是要指定好的。比如说我们设定Simon分配个数为4,Eric为3个、Tracy为3个。那么分配后,我们每一位客户就可以对应一位业务员了~这个要怎么做呢:nbtz5:
   

先给大家看看实现后的效果:
   

实现这个功能的核心就再这个“随机分配”的按钮中了~
那么我们就以这个按钮为主线给大家讲解一下随机分配是如何实现的~

1.首先我们判断客户数量是否≥所有业务员的分配次数之和,是则下一步,否则提示“分配个数大于客户资料数,请重新分配!”。
   SUM(M5)统计的是分配表的分配个数的和;
   COUNTA(F16)统计的是客户资料表中的客户总数。
   

2.判断当前可用业务员数是否>0,即是否还有可分配的业务员,如果有,则继续。没有则提示“分配业务员数据不足,请检查!”。
   

这个当前可用业务员数,就是分配个数>0的业务员的个数,因为后续会在给每位客户分配分配业务员时,给对应业务员的分配次数-1。所以分配若干系后,当前可用业务员会逐步变少并最终为0。
   

3.开始循环,给每个客户分配业务员。
   思路大致是:循环客户,然后随机选一个业务员放到新业务员字段,然后更新分配表中的这个业务员的分配个数字段,将分配个数减去1。
   1)随机选业务员,这个随机怎么实现呢?
      这里我们是这样做的,①处先对业务员进行编号,这里使用的是=ROW(A1),然后②处将分配个数大于0的业务员TEXTJOINIF起来。③处再使用js的处理,实现随机选择一个可用业务员的编号。
   

   2)得到业务员编号后, 通过VLOOKUP查询到业务员的名称
   

   3)将业务员的名称更新到客户资料表的业务员字段中。
   
   “更新记录”选择“表格中满足特定条件的行”,条件设置成 行号=ROW(A1) 等于 当前循环到了第几行
   
   这里当前循环到了第几行是通过一个辅助单元格记录的,初始值设置为1,每完成一次循环,都通过设置单元格属性将这个单元格的值是+1
   





   4)通过业务员编号,使用VLOOKUP查询到这个业务员的分配个数,计算出当前分配个数-1
   

   将新的分配个数更新到分配表中相应的业务员的分配个数字段中,注意这里的“更新记录”也是选择“表格中满足特定条件的行”,条件设置成 业务员 等于 当前业务员
   

做完上述逻辑,就可以实现业务员的随机分配功能啦~:itwn:

小伙伴们可以下载 下方↓ ↓ ↓附件中的工程文件,自己尝试一下哦~

活字格,一款开发智力的好产品~:i0tw3:

页: [1]
查看完整版本: 帮你打开活字格更神奇的功能:六十一,业务员随机分配功能