國慶值班隨機安排不重復人員該怎么弄排班表?
有沒有隨機分組的函數公式 能把左邊的人員隨機分到右邊的排班表里?
群友提了這樣一個問題。
相信對這個問題感興趣的朋友應該不少,今天就這個問題和大家聊聊解決思路。
問題說明隨機分組問題的應用場景其實很多
其實這是一個隨機分組的問題。
需要將16個人分為8組,每天兩個人,連續8天。
要求隨機組合,并且每個人只能出現一次。
模擬效果如下圖所示。
"實際數據遠不止16個人,所以需要能夠應用于批量分組的解決方案。
解決建議門檻最低最容易掌握的方法就是基礎函數+輔助列
在解決問題的角度來說,能用最基礎的技能解決是最好的。
對于上述問題,推薦使用輔助列解決。
需要兩個輔助列,具體如下:
輔助列1:生成隨機數
=RAND()
輔助列2:生成隨機數的排序(不重復隨機整數)
=RANK(A2,$A$2:$A$17)
"輔助列2是比較關鍵的,從結果來看,相當于把原有的序號(C列)打亂重排了一次。
這是下一步生成排班表的依據。
關于不重復隨機整數的生成,之前有一篇教程,有興趣的朋友可以看看,還是比較有難度的。
【Excel公式教程】生成指定范圍不重復隨機整數,這個公式你看得懂么?
完成又見凌波微步
接下來要用B列,得到最終的排班表。
方法比較多,常用的幾個引用函數都可以搞定,例如VLOOKUP、OFFSET、INDEX、INDIRECT等等。
以下給出一個VLOOKUP函數的公式:
=VLOOKUP(ROW(A1)*8+COLUMN(A1)-8,$B:$D,3,)
"將這個公式右拉下拉后排班表就完成了。
按F9會刷新,但不管怎么變化,都不會出現重名的情況。
在這個公式中,關鍵是ROW(A1)*8+COLUMN(A1)-8這部分,不管用其他幾個函數中的哪個,這部分都少不了。