來源資料欄位比對後,將值填到相應的sheet頁面欄位內
- 帖子
- 106
- 主題
- 27
- 精華
- 0
- 積分
- 169
- 點名
- 180
- 作業系統
- Win10
- 軟體版本
- Office2010
- 閱讀權限
- 20
- 性別
- 女
- 註冊時間
- 2011-6-30
- 最後登錄
- 2026-9-26
        
|
來源資料欄位比對後,將值填到相應的sheet頁面欄位內
Book1.rar (10.37 KB)
請教各位先進
附件中,source為每日匯入的文字檔資料欄位
因在內文裡怕描述不清楚,附件裡面有詳述並標示預期結果
懇請先進們,給予我一些建議與方法
謝謝大家 |
|
|
|
|
|
|
|
- 帖子
- 106
- 主題
- 27
- 精華
- 0
- 積分
- 169
- 點名
- 180
- 作業系統
- Win10
- 軟體版本
- Office2010
- 閱讀權限
- 20
- 性別
- 女
- 註冊時間
- 2011-6-30
- 最後登錄
- 2026-9-26
        
|
3#
發表於 2012-9-14 14:14
| 只看該作者
回復 2# Hsieh
Book1.rar (10.7 KB)
我在excel中又重新描述了一次,請您再看一下,是否清楚?
主要是想達到說,先從ID找到該寫入哪個sheet?
知道後,再比對符合的日期與班別,將時間寫入這個sheet裡面 |
|
|
|
|
|
|
|
- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 142
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2026-7-16
                
|
4#
發表於 2012-9-14 15:50
| 只看該作者
回復 3# chi830 - Sub ex()
- Set d = CreateObject("Scripting.Dictionary")
- Set d1 = CreateObject("Scripting.Dictionary")
- With Sheets("index")
- For Each a In .Range(.[B2], .[B2].End(xlDown))
- d(a & "") = a.Offset(, -1).Text
- Next
- End With
- With Sheets("source")
- For Each a In .Range(.[A2], .[A2].End(xlDown))
- d1(a & "," & a.Offset(, 1) & "," & a.Offset(, 2)) = a.Offset(, 3)
- Next
- End With
- For Each ky In d1.keys
- sh = d(Split(ky, ",")(0))
- With Sheets(sh)
- myid = .[A1]
- For Each a In .Range(.[A3], .[A3].End(xlDown))
- a.Offset(, 1).Resize(, 2) = Array(d1(myid & "," & a & "," & "01"), d1(myid & "," & a & "," & "02"))
- Next
- End With
- Next
- End Sub
複製代碼 |
|
|
學海無涯_不恥下問
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
5#
發表於 2012-9-14 16:17
| 只看該作者
回復 3# chi830
如果source是一天的上下班時刻資料- Option Explicit
- Sub Ex()
- Dim D As Object, E As Variant
- Set D = CreateObject("SCRIPTING.DICTIONARY")
- With Sheets("source")
- For Each E In .Range("A2", .[A2].End(xlDown))
- If D(E.Text) = "" Then
- D(E.Text) = E(1, 2) & "," & E(1, 4).Text
- Else
- D(E.Text) = D(E.Text) & "," & E(1, 4).Text
- End If
- Next
- End With
- For Each E In Sheets
- If D(E.Cells(1).Text) <> "" Then
- With E.Cells(E.Rows.Count, 1).End(xlUp).Offset(1)
- .Resize(, 3) = Split(D(E.Cells(1).Text), ",")
- End With
- End If
- Next
- End Sub
複製代碼 |
|
|
|
|
|
|
|
- 帖子
- 106
- 主題
- 27
- 精華
- 0
- 積分
- 169
- 點名
- 180
- 作業系統
- Win10
- 軟體版本
- Office2010
- 閱讀權限
- 20
- 性別
- 女
- 註冊時間
- 2011-6-30
- 最後登錄
- 2026-9-26
        
|
6#
發表於 2012-9-19 14:11
| 只看該作者
空白出勤月報表.rar (540.07 KB)
非常感謝Hsieh 先進 與GBKEE 先進的答覆
Hsieh先進所答為我預期結果,我試著照此方法修改
但是時間值仍跑不出來,煩請Hsieh大 再幫我一下
看看是哪出了錯?
有些程式碼我還沒了解清楚
謝謝您了
GBKEE 大的方式為直接新增,也可多學了一個方法,感謝您 |
|
|
|
|
|
|
|
- 帖子
- 106
- 主題
- 27
- 精華
- 0
- 積分
- 169
- 點名
- 180
- 作業系統
- Win10
- 軟體版本
- Office2010
- 閱讀權限
- 20
- 性別
- 女
- 註冊時間
- 2011-6-30
- 最後登錄
- 2026-9-26
        
|
8#
發表於 2012-10-4 13:35
| 只看該作者
回復 7# Hsieh
Hsieh 大~這是可以的,成功了,謝謝喔!! |
|
|
|
|
|
|
|