2008年9月26日 星期五

[EXCEL] 亂數排班法

 
  十個人,要亂數排到四個班,每班人數不同,如何設公式?

##CONTINUE##
  如上圖,在 E2:E11 先設定好各個班次所需人數,如 A 班要排 3 人,就把「A 班」複製 3 次;B 班只排 1 人,就把「B 班」維持 1 次;依次類推,總次數和要排班的人數會相同。

  然後,C2 =RAND(),B2 =OFFSET($E$1,RANK(C2,$C$2:$C$11),0),直接往下複製,完成。

  有沒有很熟悉的感覺?答對了,RANK(C2,$C$2:$C$11) 這個公式,就是我們在另一篇文章
不重複的亂數」中用到的公式,它會產生不重複的亂數。

  你可以這樣想,先挖好十個洞 (E 欄的排班設定),每個洞代表一個班次,然後讓每個人隨機跳進一個洞,不重複的亂數會確保每個人都跳進不同的洞,然後,亂數排班就完成了。這樣做的好處是,不管有多少人要排班,不管有幾種班,不管每班有幾個人,不必改公式,都可以很容易的排好班,只要簡單的挖好洞即可。

  C 欄是必要的,如果嫌它礙眼,可以把它放到別的工作表,或是按滑鼠右鍵把它「隱藏」起來即可。

3 意見:

十三樓主 2011/1/18 凌晨12:52 提到...

我今天開始研究 EXCEL…… 嚐試協助我那口子排班,非常非常的感謝您放出這麼多的心得……

以下是我的問題:在您這個例子中,若陳十指定想要休假,該怎麼做呢(這時只剩另一個人可以休假) ??

或者,您可以提示,該往那個方向去思索 ??

kith's blog 2011/3/25 下午1:20 提到...

由於該需求是一天的班別
那請問如果再加上一個月份
每個人可以休幾天又應該如何操作?

kith's blog 2011/3/25 下午1:22 提到...

另外多加一個條件
如果每幾位不能排某些班別
又該如何篩選?
如男生可排大夜班
女生不可排大夜班