Board logo

標題: [發問] 資料庫資料整合問題請教 [打印本頁]

作者: rouber590324    時間: 2015-3-18 10:36     標題: 資料庫資料整合問題請教

DEAR  ALL 大大 -
1.SHEET1資料庫工作表儲存格內容如下 (小弟公司限制無法上傳檔案)
        A         B         C         D
   1  姓名     日期     入廠時   出廠時
   2   A    1030102   0746    1203
   3   A    1030102   1246    1709
   4   A    1030103   0750    1716
   5   B    1030103   0742    1855
    ...
2.需求說明
    2.1 目前資料中午出外用餐者會同一日出現2筆資料(如  A君 2 3 列 0746  1203 & 1246  1709).
        需取其當日上下班時間(補回吃飯時間計算 如 A君 0746 1709)
  2.2 需求結果格式如下  (姓名同一人同一天只能留一列資料-取其前(例-0746)與尾(例-1709)之資料)
    2.2.1 資料 轉另一工作表   SHEET2  結果工作表儲存格如下
         A      B           C         D
   1  姓名      日期          入廠時     出廠時
     2   A    1030102   0746    1709
   3   A    1030103   0750    1716
   4   B    1030103   0742    1855
    ...
3.煩不吝賜教  THANKS*10000
作者: vanguarx    時間: 2015-3-18 13:13

邏輯上

同一個人, 同一天,取其 入場的最小值,與 出場的最大值...

但若有人 跨天的凌晨 才離開,例如 隔天的 0100離開,那當天就算到 2400 ?  

你這是要算 加班費的?或上班時數?
作者: rouber590324    時間: 2015-3-19 09:29

dear sir
1算 上班時數  
  2不會有超過 00:00 後還不走地.若有算至 00:00 thanks
作者: GBKEE    時間: 2015-3-19 10:49

回復 3# rouber590324
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D As Object, Rng As Range, AR()
  4.     Set D = CreateObject("SCRIPTING.DICTIONARY") '字典物件
  5.     Set Rng = Sheets("Sheet1").Range("a1")  '
  6.     Do While Rng <> ""
  7.         If D.EXISTS(Rng & Rng(1, 2)) Then 'key(關鍵字)值存在
  8.             AR = D(Rng & Rng(1, 2))       '取得內容
  9.             AR(1, 4) = Rng(1, 4)
  10.             D(Rng & Rng(1, 2)) = AR       'key(關鍵字)值 內容重新置入
  11.         Else
  12.             D(Rng & Rng(1, 2)) = Rng.Resize(, 4)
  13.         End If
  14.         Set Rng = Rng.Offset(1)  '下移一個儲存格
  15.     Loop
  16.     With Sheets(2)
  17.         .Cells.Clear
  18.         .[A1].Resize(D.Count, 4) = Application.Transpose(Application.Transpose(D.ITEMS))
  19.     End With
  20. End Sub
複製代碼

作者: rouber590324    時間: 2015-3-19 14:21

DEAR  GBKEE  大大
1.完全符合小弟之需求.非常感謝您之指導. THANKS*10000
作者: rouber590324    時間: 2015-3-19 14:37

DEAR  GBKEE  &  ALL  大大
  1.SORRY 轉出資料無問題.
   例
   C欄 =入廠時間(A) 10301020756  
   D欄 =出廠時間(B) 10301021815
  1.1 小弟需於  E欄秀出 上班時數(D-C) D欄時間 -C欄時間後之小時
         1.1.1 如範例  10301021815-10301020756= 9.32小時
   2.請教 VBA如何書寫  THANKS*10000
作者: rouber590324    時間: 2015-3-19 15:33

DEAR ALL 大大
  小弟已用如下方式解決  THANKS*10000

Sub 計算新出勤工時()
  Sheet4.Select
  Range("A1").Select
  Sheet4.[E2:E65536].ClearContents
  R = Sheet4.[A65536].End(xlUp).Row
  On Error Resume Next
  For M = 2 To R
  X1 = Mid(Sheet4.Cells(M, 3), 8, 2)
  X2 = Mid(Sheet4.Cells(M, 3), 10, 2)
  Y1 = Mid(Sheet4.Cells(M, 4), 8, 2)
  Y2 = Mid(Sheet4.Cells(M, 4), 10, 2)
  Sheet4.Cells(M, 5) = (Y1 - X1 - 1) + (60 - X2 + Y2) / 60
    Next
  Sheet4.Select
  Range("A1").Select
End Sub
作者: yokokamio212    時間: 2015-3-24 09:56

rouber590324 大大~
                 你的檔案可以分享給我嗎??
作者: rouber590324    時間: 2015-3-24 11:43

DEAR  SIR
  我無法上傳檔案.公司LOCK




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