論壇(http://www.)的一位同學提問。
以下代碼有很多的地方看不懂,請老師們麻煩給詳細添加一下注釋,小弟在學習中,希望老師賜教! Sub lqxs() Dim Arr, i&, d, Arr1 Set d = CreateObject('Scripting.Dictionary') Sheet1.Activate Arr = Sheet2.[a1].CurrentRegion For i = 2 To UBound(Arr) d(Arr(i, 2)) = Arr(i, 1) Next Arr1 = [a1].CurrentRegion For i = 2 To UBound(Arr1) If d.exists(Arr1(i, 2)) Then Arr1(i, 1) = d(Arr1(i, 2)) Next [a1].CurrentRegion = Arr1 End Sub
煙花版主的解答:
Sub lqxs()
Dim Arr, i&, d, Arr1
'創(chuàng)建字典對象
Set d = CreateObject('Scripting.Dictionary')
'激活sheet1
Sheet1.Activate
'取Sheet2工作表中A1單元格所在的區(qū)域數(shù)據(jù)
Arr = Sheet2.[a1].CurrentRegion
'遍歷數(shù)據(jù),添加到字典中
'key為B列,item為A列
For i = 2 To UBound(Arr)
d(Arr(i, 2)) = Arr(i, 1)
Next
'取SHEET1工作表中A1單元格所在的區(qū)域數(shù)據(jù)
Arr1 = [a1].CurrentRegion
'根據(jù)B列單元格中的內(nèi)容,取出對應的Item
'實現(xiàn)的應該就是類似于跨表查找對應值,
For i = 2 To UBound(Arr1)
If d.exists(Arr1(i, 2)) Then Arr1(i, 1) = d(Arr1(i, 2))
Next
'數(shù)據(jù)寫回sheet1中
[a1].CurrentRegion = Arr1
End Sub
冥王 的解答 Sub lqxs()
Dim Arr, i&, d, Arr1
Set d = CreateObject('Scripting.Dictionary') '設定d=創(chuàng)建對象('Scripting.Dictionary')
Sheet1.Activate '激活工作表Sheet1
Arr = Sheet2.[a1].CurrentRegion 'Sheet2工作表[a1單元格的當前區(qū)域賦值給變量Arr(變量Arr變成了一個數(shù)組)
For i = 2 To UBound(Arr) '設定變量i的范圍為2到數(shù)組Arr的上標
d(Arr(i, 2)) = Arr(i, 1)
Next '下一個循環(huán)
Arr1 = [a1].CurrentRegion '[a1]的當前區(qū)域賦值給變量Arr1(變量Arr1變成了數(shù)組)
For i = 2 To UBound(Arr1) '設定變量范圍為i=2到UBound(Arr1)
If d.exists(Arr1(i, 2)) Then Arr1(i, 1) = d(Arr1(i, 2)) '如果 d.exists(Arr1(i,2)) 則執(zhí)行 Arr1(i,1)=d(Arr1(i,2))
Next '下一個循環(huán)
[a1].CurrentRegion = Arr1 '數(shù)組Arr1的元素寫入[a1]的當前區(qū)域
End Sub
繼續(xù)提問 For i = 2 To UBound(Arr) d(Arr(i, 2)) = Arr(i, 1) 這部分還是不理解,能不能聯(lián)系實現(xiàn)工作表,詳細
煙花老師的答案
標準工作表(sheet2)中A1:B66中的數(shù)據(jù),這是一個二維數(shù)組。 因為第1行是標題,所以在循環(huán)數(shù)組的時候,只需要從第二行開始。 在循環(huán)這些標準數(shù)據(jù)時,通過字典把工資標準與其對應的薪級檔次放入到字典對象中。 例如:80對應的是第1級
查看原貼請單擊左下角原文鏈接
|