網友問到:如果有一個員工的名冊,想要用其製作一個亂數排班表,其中同一天的員工姓名不能有重覆的現象。

因為亂數產生,所以會用到「反覆運算」,因此要先選取[檔案/選項],在[公式]標籤下勾選「啟用反覆運算」,並將最高次數設定為「5,000」(數值越大,運算時間越長)。

先選取儲存格A1:A9,按一下 Ctrl+Shift+F3 鍵,定義名稱:員工。

儲存格D2:=IF(COUNTIF($D2:$I2,D2)>1,INDEX(員工,INT(RAND()*8+1),),D2)

INT(RAND()*8+1):產生 1~8 的亂數值(員工有 8 名)。

INDEX(員工,INT(RAND()*8+1),):利用 INDEX 函數以查表方式查得員工姓名。

COUNTIF($D2:$I2,D2)>1:判斷儲存格D2的內容在儲存格D2:I2範圍中的個數,如果超過 1,表示有重覆,則重新再產生。因為已經設定反覆運算 5,000 次,重覆的機會應該很低(無法百分之百肯定不重覆)。

複製公式的方式:

1. 拖曳儲存格D2右下角的控制點,向下複製到儲存格D32。(儲存格D2:D32為被選取的狀態)

2. 拖曳儲存格D32右下角的控制點,向右複製到儲存格D2:I32。

每做一次複製的動作,Excel 就會重新運算一次。(可以產生不同的排班表)

由上圖右側的統計表可得知,這個公式的結果,每個人出現的次數並不平均。(看網友如何運用了!)

arrow
arrow
    全站熱搜

    vincent 發表在 痞客邦 留言(5) 人氣()