excel学习库

excel表格_excel函数公式大全_execl从入门到精通

用 Excel 搞定人员分组/随机排班,一次性及自动化的方案都有

大多数情况下,我们在 Excel 中是需要把数据排序,以使得数据更有逻辑,但有一些场景下,我们可能还需要把数据打乱或随机排序。

例如你要做一个抽奖功能,可以通过随机排序实现;或者你是培训/团建活动的组织者,需要把所有参加人员打乱重新编组;或者你是 HR,需要进行随机地安排值班人员出勤等等。

那在 Excel 怎么去实现随机分组呢?

01 插入随机数排序

对于一次性随机化需求,添加随机数辅助列是最简单的方法。在需要排序的数据旁边插入一个新的辅助列,用RAND()可以生成 0 到 1 之间的随机小数:

利用随机数进行辅助排序

然后先选择随机数这一列里任意一个数值,再通过手工点击升序/降序,就能把连续区域的相邻列也一起排序,实现对数据随机排序的效果。

这里有个小细节,可能你会发现,明明你点了升序/降序,但为什么随机数这一列的顺序好像没排过序一样呢?

其实是因为你每点击一次排序,会导致RAND()函数重新计算,又生成了新的随机数。所以这也是为什么你多次点击排序时,得到的是不同的排序结果。这意味着你可以多次点击排序,再加以人工判断,以达到你想要的乱序结果。

除了RAND函数外,你还可以使用RANDBETWEEN,但要注意RANDBETWEEN是生成随机整数的,你设置的范围应该要足够宽,至少得覆盖待排序的项目,这样才有更好的随机效果。

02 不更改数据源排序

上面的方式是直接在数据源中处理,如果你没有备份的话,可能会导致原来的顺序丢失。或者你想对照着源顺序去进行排序时,就可以使用以下这种方法。

需要你的 Excel 是 2021 版本以上或者 365 版本,可以使用SORTBYRANDARRAY来实现在数据源的外部进行随机排序。

SORTBY在外部排序
= SORTBY(A2:A11, RANDARRAY(ROWS(A2:A11)))

SORTBY的第一个参数,就是你要排序的表格区域,然后第二个参数就是排序依据,这里使用了RANDARRAY(ROWS(A2:A11))生成一个随机数列为排序依据,其中的ROWS(A2:A11)是用来计算待排序区域有几行的。本质上和第 1 种方法是一样的。

ps:通过不断按 F9 快捷键,让函数重新计算,就能获得不同的乱序结果。

你可以结合表格的自适应,或者 offset 函数构造动态区域,就可以实现用函数随机排序自动化,下次有数据更改时也能自动排序。

03 通过 Power Query 排序

Power Query 是 Excel 中非常强大的数据转换工具,如果你希望构建一个自动化的排序流程。例如你这次是对 10 个员工进行排序,下次可能是 100 个员工,如果这种事情你经常要做,你用 Power Query 把它设计成自动化的处理流程也是很方便的。

把数据导入Power Query

导入 Power Query 后,我们的思路和第 1 种方法类似,也是通过添加随机数列,以实现随机排序。

插入随机数列进行排序

图中在 Power Query 中插入随机数时,使用的是List.Random(1)这个写法,表示的是生成一个 1 个元素的随机数组,然后我们通过提取值把数据提取出来,再进行排序即可。

排好序后,就可以把辅助列删除了,当你下次刷新时 Power Query 会重新跑一下图中所有的操作流程,实现自动随机排序。

最后加载回到工作表中即可,需要随机排序时,只需要点击“全部刷新”,就能不断刷新随机排序结果了。

刷新随机排序结果

要注意的是 Power Query 不适合使用Number.Random()来生成随机数列,因为在表格里它会每一行都生成一样的随机数,这样就没法排序区分了,你也可以自行测试下。

总结

一次性需求,就用RAND函数生成随机数列解决,但要注意下是否需求复制一份数据去操作,以避免对数据源进造成不可恢复的更改;经常性的任务, 可以用SORTBYRANDARRAY实现自动化,当然也能用 Power Query 实现自动化,它们都不会影响源数据。

希望本文对你有帮助,可以点个小赞支持一下,下次再继续原创更多干货~

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接