返回列表 上一主題 發帖

[發問] 3段式輪班法

[發問] 3段式輪班法

123.rar (7.22 KB) 請教各位先進,有一輪值表分為3種輪值方式,輪值人員為B90-E128範圍,並依平日上班時段分為2班,平日下班時段1班,以及例假日2班,3種班表各自輪流服勤,假設7月1日(星期日)由A8開始輪值,7月2日上班日第1班由S1開始輪值,7月2日平常日下班時段由A1開始輪值,請問是否可用VBA取得每月之輪值表呢?麻煩各位先進了。

回復 1# h60327
試試看

輪值表.rar (12.5 KB)

TOP

回復 2# GBKEE
排班 R, Range(R)
請教您第二個引入參數,為何使用 Range(R),其用意何在?

TOP

不是很了解,但是透過定義名稱取得每一個班表的輪序是一個好構想,只是由於每一個月的星期排序並未固定,可否透過程序自動調整調整顯示呢?例如7月1日是星期日,8月1日是星期三等,再次感謝

TOP

本帖最後由 GBKEE 於 2012-8-14 10:48 編輯

回復 3# c_c_lai ]
Range(R),其用意何在?  
R="平日" ->  Range("平日")     
定義"平日" 的範圍"A1:C10"  => Range("A1:C10")

回復 4# h60327
三個班表的輪序 都有註明輪序符號
每月制定排班表示都依每段班表最後符號開始, 應該不需理會每月的星期排序吧.

當輪序到底時,會回到第一個員工開始輪序
  1. Private Sub 排班(R As Range, Rng As Range)
  2.     Dim X As Integer, xMatch As Integer, xRng As Range
  3.     X = Application.CountA(Rng)
  4.     If X = Rng.Count Then    '已是最後排班員工
  5.         Rng.Clear
  6.         X = 0
  7.     End If
  8.     Rng.Cells(X + 1) = "◎"
  9.     Set xRng = Rng.Cells(X + 1).Offset(, -1)
  10.     xMatch = Application.Match(xRng.Text, Range("人員資料").Columns(3), 0)
  11.     R.Offset(, 1).Resize(, 3) = Range("人員資料").Rows(xMatch).Value
  12. End Sub
複製代碼

TOP

如何把代碼打到,裡面?

TOP

回復 6# keovin790916
巨集

請ALT+F11

就可以輸入公式了
excel學習中!築出夢想
https://www.youtube.com/channel/UCPAiRNsHX3k_omp0YDgfDiA

TOP

很好用的程式,
只想再進一步試問
如果在排平日班時,排到特定人時,要固定在下午班
這又該如果修改(現實總有一些特殊人員)
謝謝!
max

TOP

        靜思自在 : 人要知福、惜福、再造福。
返回列表 上一主題