返回列表 上一主題 發帖

[發問] 怎麼抓取A資料表假日上班的日期與時間到B資料表的儲存格中

本帖最後由 luhpro 於 2013-11-15 22:51 編輯
回復  luhpro
這是我有針對"11月"資料表稍為修改後的檔案(新增假日有分早晚班及全日班)
但是貼您的程式執行後出來的日期並不是該人假日上班的日期呢
請問我是哪裡有設定錯誤嗎?!prince0413 發表於 2013-11-15 14:51

請參閱上方 4# 內有說明 :
抓的是如該篇文內下方圖中 Mark 起來的6個儲存格中的資料(即 本月假日出勤時段 那個表格, 因為只有那個表有時間資料),
並沒有參考上方的表中的資料.

若你想要套用至多人,
建議你把 本月假日出勤時段 那個表格放到最上面,(若你不希望變更位置, 那我將會改採最後一列資料的相對位置來抓取此表格<會較容易出錯>)
然後 Princey 資料那一列的下方再新增至少一個人的資料,
這樣做出來的程式才容易符合你的需求,
請先依上述調整一下該 Sheet 內容後再上傳檔案,
不然之後程式做好了照樣還是要再改一次.

開題時若提出的範例能儘量符合實際需求,
這樣幫忙的人會比較快做出你要的東西,
如本串的例子,
只抓上表 或 只抓下表, 亦或是兩表都抓,
做出來的程式是可能會有很大的不同的喔.

TOP

回復 11# luhpro


了解~我會將完整檔修正後po上來
再完整重新敘述需求的~

因為一開始我只show出我自己的班表想藉由大大的教學程式碼理解   
然後在把所有人的班表也加進來該月份裡     將所學的程式碼當範本套用在很多人身上
但這樣好像造成反效果     反而自己看不懂也麻煩到大大您一直修改來修改去了

我這幾天會把所有人的班表key in整理好     再傳上來~
到時候麻煩您教學了

真不好意思     一直麻煩您
不會EXCALL的笨蛋

TOP

請假&出勤申請單(上傳用).zip.zip (48.27 KB) 回復 11# luhpro


大大您好:
這是我整理出完整的班表

目的:
在"假日出勤單"內 J2 儲存格下方輸入人名後,旁邊休日出勤單會自動抓取該人"11月"資料表全部的假日上班日期與時間
紅字部分內是要抓取的資料

請問這樣我該怎麼寫程式呢

請大大指導
不會EXCALL的笨蛋

TOP

[發問] 怎麼抓取A資料表假日上班的日期與時間到B資料表的儲存格中

請假&出勤申請單(上傳用).zip.zip (48.27 KB)
大大們您好:

目的:
在"假日出勤單"內 J2 儲存格下方輸入人名後,旁邊休日出勤單會自動抓取該人"11月"資料表全部的假日上班日期與時間
紅字部分內是要抓取的資料

請問這樣我該怎麼寫程式呢

請大大們指導

感恩

(如檔案格式怪怪的請再副檔名後加入.ZIP)
不會EXCALL的笨蛋

回復 14# prince0413
試試看
  1. Const 早 = "10:00~18:00"
  2. Const 全日 = "10:30~18:30"
  3. Const 晚 = "11:00~19:00"
  4. Sub Ex()
  5.     Dim Rng(1 To 2) As Range, i As Integer, 出勤 As String
  6.     Sheets("假日出勤單").PageSetup.PrintArea = "A1:H13"      '一頁就夠了
  7.     Set Rng(1) = Sheets("假日出勤單").Range("J2")            '設定姓名
  8.     Do While Rng(1) <> ""                                    '執行迴圈的條件:姓名<>""
  9.         With Sheets("11月")
  10.             Set Rng(2) = .Range("B:B").Find(Rng(1), LOOKAT:=xlWhole)
  11.             If Not Rng(2) Is Nothing Then
  12.                 i = 3                                         '第3欄 :C
  13.                 Do While IsNumeric(.Cells(4, i))              '執行迴圈的條件:第4列是數字
  14.                     If .Cells(5, i) = "六" Or .Cells(5, i) = "日" Then
  15.                         出勤 = ""                             '歸零
  16.                         If .Cells(Rng(2).Row, i) Like "*早*" Then
  17.                             出勤 = 早
  18.                         ElseIf .Cells(Rng(2).Row, i) Like "*晚*" Then
  19.                            
  20.                             出勤 = 晚
  21.                         ElseIf .Cells(Rng(2).Row, i) Like "*全日*" Then
  22.                             出勤 = 全日
  23.                         End If
  24.                         If 出勤 <> "" Then
  25.                             Sheets("假日出勤單").Range("B3") = Rng(1)                               '姓名
  26.                             Sheets("假日出勤單").Range("D3") = Rng(2).Offset(, -1)                  '社員編號
  27.                             Sheets("假日出勤單").Range("A5") = DateSerial(2013, 11, .Cells(4, i))   '日期
  28.                             Sheets("假日出勤單").Range("B5") = 出勤                                 '時間
  29.                             Sheets("假日出勤單").Range("D5") = IIf(.Cells(4, i) = "六", "(星期六)", "(星期日)") & "沙龍營業"
  30.                             Sheets("假日出勤單").PrintOut    '印列出勤單
  31.                         End If
  32.                     End If
  33.                     i = i + 1
  34.                 Loop
  35.             End If
  36.         End With
  37.         Set Rng(1) = Rng(1).Offset(1)    '下一位姓名
  38.     Loop
  39. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2013-11-19 17:11 編輯

Ex.zip.zip (49.98 KB) 回復 15# GBKEE

大大您好

我剛貼您的程式進去"Ex"巨集裡
但在"假日出勤單"資料表J2儲存格輸入"英文姓名"後卻沒有反應呢

ps:我忽略姓名中英文對照了(假日出勤單是要轉換成中文姓名),已在下方補上,請大大再幫我看看是否我忽略了甚麼~


Abby  丁X芸
Masumi 吳X錚
Jessica 林X燕
Hitomi 林X婷
Jason 許X豪
Red 陳X呈
Lynn 戴X伶
Prince 許X強
Edge 蘇X祐
Joyce 侯X雯
Jack 黃X傑
不會EXCALL的笨蛋

TOP

回復 16# prince0413
中英文對照表,請放在工作表好對照(注意個人資料),弄好後上傳檔案,我再看看.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

Ex.zip.zip (48.05 KB) 回復 17# GBKEE

大大您好

附件為加入中英姓名對照資料表,以及在"Ex"巨集貼入您的程式後的結果

請您再指教一下

感恩
不會EXCALL的笨蛋

TOP

回復 18# prince0413
  1. Const 早 = "10:00~18:00"
  2. Const 全日 = "10:30~18:30"
  3. Const 晚 = "11:00~19:00"
  4. Sub Ex()
  5.     Dim Rng(1 To 2) As Range, i As Integer, 出勤 As String, M As Variant
  6.     Sheets("假日出勤單").PageSetup.PrintArea = "A1:H13"      '一頁就夠了
  7.     Set Rng(1) = Sheets("假日出勤單").Range("J2")            '設定姓名
  8.     Do While Rng(1) <> ""                                    '執行迴圈的條件:姓名<>""
  9.         With Sheets("11月")
  10.             Set Rng(2) = .Range("B:B").Find(Rng(1), LOOKAT:=xlWhole)
  11.             M = Application.Match(Rng(1), Sheets("中英文姓名對照表").Range("A:A"), 0)  'Match : 工作表函數
  12.             If IsError(M) Then MsgBox "中英文姓名對照表 中沒有 : " & Rng(1): Exit Sub
  13.             If Not Rng(2) Is Nothing Then
  14.                 i = 3                                         '第3欄 :C
  15.                 Do While IsNumeric(.Cells(4, i))              '執行迴圈的條件:第4列是數字
  16.                     If .Cells(5, i) = "六" Or .Cells(5, i) = "日" Then
  17.                         出勤 = ""                             '歸零
  18.                         If .Cells(Rng(2).Row, i) Like "*早*" Then
  19.                             出勤 = 早
  20.                         ElseIf .Cells(Rng(2).Row, i) Like "*晚*" Then
  21.                             出勤 = 晚
  22.                         ElseIf .Cells(Rng(2).Row, i) Like "*全日*" Then
  23.                             出勤 = 全日
  24.                         End If
  25.                         If 出勤 <> "" Then
  26.                             Sheets("假日出勤單").Range("B3") = Sheets("中英文姓名對照表").Cells(M, "B")     '姓名: 對照出在B欄的 M列
  27.                             Sheets("假日出勤單").Range("D3") = Rng(2).Offset(, -1)                          '社員編號
  28.                             Sheets("假日出勤單").Range("A5") = DateSerial(2013, 11, .Cells(4, i))           '日期
  29.                             Sheets("假日出勤單").Range("B5") = 出勤                                         '時間
  30.                             Sheets("假日出勤單").Range("D5") = IIf(.Cells(4, i) = "六", "(星期六)", "(星期日)") & "沙龍營業"
  31.                             Sheets("假日出勤單").PrintOut                                                   '印列出勤單
  32.                         End If
  33.                     End If
  34.                     i = i + 1
  35.                 Loop
  36.             End If
  37.         End With
  38.         Set Rng(1) = Rng(1).Offset(1)    '下一位姓名
  39.     Loop
  40. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 19# GBKEE

大大您好

我剛貼您的程式進去巨集後,再J2儲存格輸入英文姓名都沒有反應呢
怎麼會這樣呢?

-------------------------------------------------------------------------------
疑問1:
Sheets("假日出勤單").PageSetup.PrintArea = "A1:H13"      '一頁就夠了

上面程式碼請問大大這甚麼意思呢,照道理說一個人一個月至少會有很多天假日出勤單,代表不只會有一份而以,但大大為什麼範圍只抓"A1:H13"一張而已呢?

不好意思,一直請教您問題~
麻煩了
不會EXCALL的笨蛋

TOP

        靜思自在 : 能付出愛心就是福,能消除煩惱就是慧。
返回列表 上一主題