標題:
請教:自動排班EXCEL如何處理
[打印本頁]
作者:
gaishutsusuru
時間:
2016-3-25 22:25
標題:
請教:自動排班EXCEL如何處理
本帖最後由 gaishutsusuru 於 2016-3-25 22:27 編輯
想做個excel 排班功能,說明如下:
(圖一) [attach]23582[/attach]
上班開始日、上班結束日、開始班別:這三個由請假方填寫
黃色部份:我方填寫要安排的人員
註:開始班別:依1→2→3→1→2→3 ...... 這三種模式循環去輪
一旦黃色部份填上後,會自動出現如圖二的資料
(圖二) [attach]23581[/attach]
請教,非粗體字的部份,該如何寫公式,才能有這種功能呢?
我想了好久,還是不懂。所以請教各位excel大大的想法,謝謝。
作者:
luhpro
時間:
2016-3-26 01:20
本帖最後由 luhpro 於 2016-3-26 01:22 編輯
回復
1#
gaishutsusuru
這可用 Dictionary 函數先建立相關位置索引後會較容易做.
[attach]23602[/attach]
Private Sub cbClr_Click()
Range([H2], [J11]).Clear
End Sub
Private Sub cbGet_Click()
Dim iCol%, iNo%
Dim lRow&
Dim dDate As Date
Dim vDd, vDp
Set vDd = CreateObject("Scripting.Dictionary")
Set vDp = CreateObject("Scripting.Dictionary")
lRow = 2
While Cells(lRow, 7) <> ""
vDd(CStr(Cells(lRow, 7))) = lRow
lRow = lRow + 1
Wend
iCol = 8
While Cells(1, iCol) <> ""
vDp(CStr(Cells(1, iCol))) = iCol
iCol = iCol + 1
Wend
lRow = 2
While Cells(lRow, 2) <> ""
dDate = Cells(lRow, 2)
iNo = Cells(lRow, 4)
While dDate <= Cells(lRow, 3)
Cells(vDd(CStr(dDate)), vDp(CStr(Cells(lRow, 5)))) = iNo
iNo = iNo + (iNo = 3) * 3 + 1
dDate = dDate + 1
Wend
lRow = lRow + 1
Wend
End Sub
複製代碼
[attach]23603[/attach]
作者:
hcm19522
時間:
2016-3-26 10:27
http://blog.xuite.net/hcm19522/twblog/395556234
G2:I11{=IFERROR(MOD(LOOKUP(1,0/(($F2>=$A$2:$A$7)*($F2<=$B$2:$B$7)*($D$2:$D$7=G$1)),$C$2:$C$7)-2+ROW(A1),3)+1,"")
作者:
ML089
時間:
2016-3-26 17:01
回復
1#
gaishutsusuru
借2樓檔案格式
H2陣列公式
{=TEXT(MIN(IF((H$1=$E$2:$E$7)*($B$2:$B$7+COLUMN($A:$Z)-1=$G2)*($G2<=$C$2:$C$7),MOD($D$2:$D$7+COLUMN($A:$Z)+1,3)+1)),"[>];")}
需用三鍵(SHIFT+CTRL+ENTER)齊按輸入公式
作者:
gaishutsusuru
時間:
2016-3-26 22:06
非常謝謝各位的意見想法,真的很有幫助。
ps. 因為個人權限不足(只是小學生),所以不能下載「能實做.zip (28.82 KB)」,不知有沒有其他方式可以下載? 謝謝
作者:
ML089
時間:
2016-3-26 23:41
回復
5#
gaishutsusuru
http://www.FunP.Net/889679
作者:
luhpro
時間:
2016-3-27 23:35
非常謝謝各位的意見想法,真的很有幫助。
ps. 因為個人權限不足(只是小學生),所以不能下載「能實做.zip ( ...
gaishutsusuru 發表於 2016-3-26 22:06
能實做.zip (28.82 KB)
作者:
准提部林
時間:
2016-3-30 14:24
H2.陣列公式:
=SUBSTITUTE(MAX((MOD($G2-$B$2:$B$7+$D$2:$D$7-1,3)+1)*($B$2:$B$7<=$G2)*($C$2:$C$7>=$G2)*($E$2:$E$7=H$1)),0,)
或:
=TEXT(MAX((MOD($G2-$B$2:$B$7+$D$2:$D$7-1,3)+1)*($B$2:$B$7<=$G2)*($C$2:$C$7>=$G2)*($E$2:$E$7=H$1)),"[>];")
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)