Board logo

標題: [發問] 用符號去對應人名做出名單 [打印本頁]

作者: domotomomo    時間: 2014-1-18 22:25     標題: 用符號去對應人名做出名單

各位前輩好,最近剛使用EXCEL,老闆給了一個作業,
平常都是利用符號去表示每個人休假、病假、值班等等,如下圖的排班表
但老闆要我每個禮拜去做每天有誰放假的名單,但員工人很多,每次都要數很久
而且容易數錯,因此想說看能否利用EXCEL,當我每個月的排班表排好以後,可以
自動排出每天有誰放假,如下圖周一到周日放假名單,這EXCEL有辦法達成嗎?
附件是範例的排班表,拜託請大大教我一下怎麼做出來這表格?函數的方式能做出來嗎?
作者: Hsieh    時間: 2014-1-18 23:43

回復 1# domotomomo

C2陣列公式
=IF(COUNTIF(排班表!$C2:$T2,"◇")<COLUMN(A$1),"",INDEX(排班表!$C$1:$T$1,,SMALL(IF(排班表!$C2:$T2="◇",COLUMN($C$1:$T$1),""),COLUMN(A$1))-2))   
[attach]17306[/attach]
作者: domotomomo    時間: 2014-1-19 00:55

回復 2# Hsieh

  非常感謝前輩的教學,我試著照做,但是好像都會出錯跟下圖一樣,是哪裡出問題嗎?
  還有一個問題是如果同時有病假(菱形)跟休假(圓形)都屬於休假人員,這能一起顯示嗎?
作者: yen956    時間: 2014-1-19 15:33

用VBA, VBA code 如下:
Sub 統計放假名單()
   Dim x, y As Object
   Dim i, j, k As Integer
   Dim str1 As String
   Dim Colindx(5) As Integer
   Set x = Sheets("放假名單")
   Set y = Sheets("統計表")
   
   y.Range("D3:X72").ClearContents
   
   '列數(i+2)代表日期
   For i = 1 To 31
   
      'Colindx(k)代表"統計表"的欄數計數器
      For k = 1 To 5
         Colindx(k) = 3
      Next
      
     '欄數(j-2)代表員工數
      For j = 3 To 18
         str1 = x.Cells(i + 2, j)
         Select Case str1
            Case Is = "▽"
               Colindx(1) = Colindx(1) + 1
               y.Cells(i * 5 - 2, Colindx(1)) = x.Cells(2, j)
            Case Is = "○"
               Colindx(2) = Colindx(2) + 1
               y.Cells(i * 5 - 1, Colindx(2)) = x.Cells(2, j)
            Case Is = "◎"
               Colindx(3) = Colindx(3) + 1
               y.Cells(i * 5, Colindx(3)) = x.Cells(2, j)
            Case Is = "□"
               Colindx(4) = Colindx(4) + 1
               y.Cells(i * 5 + 1, Colindx(4)) = x.Cells(2, j)
            Case Is = "☆"
               Colindx(5) = Colindx(5) + 1
               y.Cells(i * 5 + 2, Colindx(5)) = x.Cells(2, j)
         End Select
      Next
   Next
End Sub
放假名單如下:

統計表執行結果如下:

作者: yen956    時間: 2014-1-19 15:41

回復 3# domotomomo

補 Excel檔案如下:
放假名單.rar
https://www.mediafire.com/?qf979x7bdwc16hy




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)