返回列表 上一主題 發帖

請教:自動排班EXCEL如何處理

請教:自動排班EXCEL如何處理

本帖最後由 gaishutsusuru 於 2016-3-25 22:27 編輯

想做個excel 排班功能,說明如下:

(圖一) 1.JPG
上班開始日、上班結束日、開始班別:這三個由請假方填寫
黃色部份:我方填寫要安排的人員
註:開始班別:依1→2→3→1→2→3 ......    這三種模式循環去輪

一旦黃色部份填上後,會自動出現如圖二的資料

(圖二) 2.JPG
請教,非粗體字的部份,該如何公式,才能有這種功能呢?

我想了好久,還是不懂。所以請教各位excel大大的想法,謝謝。

本帖最後由 luhpro 於 2016-3-26 01:22 編輯

回復 1# gaishutsusuru
這可用 Dictionary 函數先建立相關位置索引後會較容易做.

  1. Private Sub cbClr_Click()
  2.   Range([H2], [J11]).Clear
  3. End Sub

  4. Private Sub cbGet_Click()
  5.   Dim iCol%, iNo%
  6.   Dim lRow&
  7.   Dim dDate As Date
  8.   Dim vDd, vDp
  9.   
  10.   Set vDd = CreateObject("Scripting.Dictionary")
  11.   Set vDp = CreateObject("Scripting.Dictionary")
  12.   
  13.   lRow = 2
  14.   While Cells(lRow, 7) <> ""
  15.     vDd(CStr(Cells(lRow, 7))) = lRow
  16.     lRow = lRow + 1
  17.   Wend
  18.   
  19.   iCol = 8
  20.   While Cells(1, iCol) <> ""
  21.     vDp(CStr(Cells(1, iCol))) = iCol
  22.     iCol = iCol + 1
  23.   Wend
  24.   
  25.   lRow = 2
  26.   While Cells(lRow, 2) <> ""
  27.     dDate = Cells(lRow, 2)
  28.     iNo = Cells(lRow, 4)
  29.     While dDate <= Cells(lRow, 3)
  30.       Cells(vDd(CStr(dDate)), vDp(CStr(Cells(lRow, 5)))) = iNo
  31.       iNo = iNo + (iNo = 3) * 3 + 1
  32.       dDate = dDate + 1
  33.     Wend
  34.     lRow = lRow + 1
  35.   Wend
  36. End Sub
複製代碼
能實做.zip (28.82 KB)

TOP

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,"")

TOP

回復 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)齊按輸入公式
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

非常謝謝各位的意見想法,真的很有幫助。
ps. 因為個人權限不足(只是小學生),所以不能下載「能實做.zip (28.82 KB)」,不知有沒有其他方式可以下載? 謝謝

TOP

回復 5# gaishutsusuru

http://www.FunP.Net/889679
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

非常謝謝各位的意見想法,真的很有幫助。
ps. 因為個人權限不足(只是小學生),所以不能下載「能實做.zip ( ...
gaishutsusuru 發表於 2016-3-26 22:06


能實做.zip (28.82 KB)

TOP

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)),"[>];")

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題