iT邦幫忙

0

Excel vba寫排班順序

  • 分享至 

  • twitterImage

各位大大,我要寫排班的順序,有人可以幫忙嗎?
早:1, 2, 3, A1, A2
晚:N1, N2, N3, T, B
第二天:
早 早 晚 晚 早 晚 早 早 晚 晚
1, 2, N1, N2, 3, N3, A1, A2, T, B
第二天:
早 早 晚 晚 晚 早 晚 早 晚 早
2, 3, N2, N3, N1 A1 T 1, B, A2

第二天要先判斷是否和上一天同樣上早(晚)班,如果同樣就依班次往下接,如果不同就跳下一格,等同樣早(晚)班的依序排完後,再排早接晚和晚接早班的。

比如:第五位人員第一天是早班,第二天是晚班,那第一次判斷時就先跳過不排班,等第二次要排早晚班互換的同仁時,第五位人員是晚班第一個順位,但班次不能重複上,所以從晚班N1開始判斷有沒有人上過,沒有就填N1上去,假如有上過,就依序往下找,直到找到未排的班次,然後在填上。

不知有沒有高手知道如何寫VBA程式碼。感謝了

看更多先前的討論...收起先前的討論...
看不懂
問到第三題
總算說出比較完整的問題了
(第一題我就猜是排班問題)
先不急著寫 VBA
要先把排班規則定義清楚
否則寫出來的 VBA 很快就不適用了....

排班這種複雜的規則
所有文字都要很精確以免造成誤解
1.兩個「第二天」是何解?
2.A1 T 1 又是何解?

如果問題是「差不多」
答案也會是「差不多」
slime iT邦大師 1 級 ‧ 2019-06-13 19:31:09 檢舉
下一階段: VBA 寫調班順序, VBA 寫計算工時, VBA 寫計算薪資....
題外話,我都是用VisualStudio201X + EPPLUS 來動態產生輸出XLSX檔,VBA真的是效能不好,上千行的表格跑個十幾秒半分鐘,更甭說上萬行了
至於排班,加進勞基法新修正後的版本,你可能考慮用背包法來讓每個人在某一個周期內領到的班球都能平均分配,如有早中班三班,每個人就是有三個背包,輪流放滿就對了(所以才建議用VS+C#來寫,有LIST可以操作)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答