標題:
來源資料欄位比對後,將值填到相應的sheet頁面欄位內
[打印本頁]
作者:
chi830
時間:
2012-9-13 12:03
標題:
來源資料欄位比對後,將值填到相應的sheet頁面欄位內
[attach]12473[/attach]
請教各位先進
附件中,source為每日匯入的文字檔資料欄位
因在內文裡怕描述不清楚,附件裡面有詳述並標示預期結果
懇請先進們,給予我一些建議與方法
謝謝大家
作者:
Hsieh
時間:
2012-9-13 16:32
回復
1#
chi830
source中ID並沒有與你的範例對應
請檢查資料確認對應條件
作者:
chi830
時間:
2012-9-14 14:14
回復
2#
Hsieh
[attach]12494[/attach]
我在excel中又重新描述了一次,請您再看一下,是否清楚?
主要是想達到說,先從ID找到該寫入哪個sheet?
知道後,再比對符合的日期與班別,將時間寫入這個sheet裡面
作者:
Hsieh
時間:
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
複製代碼
作者:
GBKEE
時間:
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
複製代碼
作者:
chi830
時間:
2012-9-19 14:11
[attach]12544[/attach]
非常感謝Hsieh 先進 與GBKEE 先進的答覆
Hsieh先進所答為我預期結果,我試著照此方法修改
但是時間值仍跑不出來,煩請Hsieh大 再幫我一下
看看是哪出了錯?
有些程式碼我還沒了解清楚
謝謝您了
GBKEE 大的方式為直接新增,也可多學了一個方法,感謝您
作者:
Hsieh
時間:
2012-9-19 14:57
回復
6#
chi830
不知道這樣對不對?
[attach]12545[/attach]
作者:
chi830
時間:
2012-10-4 13:35
回復
7#
Hsieh
Hsieh 大~這是可以的,成功了,謝謝喔!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)