版主大人我查看了幾次有一些不太了解
Set d = CreateObject("Scripting.Dictionary") 這各的意思是什麼 ()裡面的意思又是什麼?
For Each a In .Range(.[A2], .[A2].End(xlDown)) 這句為什麼Range的前面要加.()裡面的[]前面也要加.?
d(a.Value) = a.Offset(, 1).Value 這句不太懂
If .AutoFilterMode = False Then .Range("A:B").AutoFilter 沒用過這種方式(.Range("A:B").AutoFilter)做自動篩選有沒有限制
.Range("A:B").AutoFilter 1, ky 這句不懂
Set Rng = .AutoFilter.Range.Offset(1, 0).Columns(2).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants) 這句的意思?
Sub ex()
Dim Rng As Range
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary") '創建一個字典物件
With 工作表2
For Each a In .Range(.[A2], .[A2].End(xlDown)) '在A2以下儲存格做迴圈
d(a.Value) = a.Offset(, 1).Value '以a的值作為索引,a的右側儲存格的值加入字典物件
Next
End With
With 工作表1
If .AutoFilterMode = False Then .Range("A:B").AutoFilter '假如工作表非自動篩選狀態,就執行A:B欄資料自動篩選
For Each ky In d.keys '以字典物件的索引做迴圈
.Range("A:B").AutoFilter 1, ky 'A:B欄自動篩選,以第一欄(A欄),準則為字典物件索引值做篩選
Set Rng = .AutoFilter.Range.Offset(1, 0).Columns(2).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants) '自動篩選範圍向下一列的第2欄中所有可見儲存格並且是非空格的部分賦予變數Rng
If Rng.Count > 0 Then Rng = d(ky) '如果Rng這個範圍的儲存格數量大於零,表示有此準則資料,就將這些儲存格填入以ky為索引值的字典內容
Next
.Range("A:B").AutoFilter '解除自動篩選
End With
Application.ScreenUpdating = True
End Sub作者: freeffly 時間: 2011-11-3 14:06