- ©«¤l
- 4901
- ¥DÃD
- 44
- ºëµØ
- 24
- ¿n¤À
- 4916
- ÂI¦W
- 218
- §@·~¨t²Î
- Windows 7
- ³nÅ骩¥»
- Office 20xx
- ¾\ŪÅv
- 150
- ©Ê§O
- ¨k
- ¨Ó¦Û
- ¥x¥_
- µù¥U®É¶¡
- 2010-4-30
- ³Ì«áµn¿ý
- 2025-9-7
               
|
¦^´_ 5# freeffly
Sub ex()
Dim Rng As Range
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary") '³Ð«Ø¤@Ó¦r¨åª«¥ó
With ¤u§@ªí2
For Each a In .Range(.[A2], .[A2].End(xlDown)) '¦bA2¥H¤UÀx¦s®æ°µ°j°é
d(a.Value) = a.Offset(, 1).Value '¥HaªºÈ§@¬°¯Á¤Þ¡Aaªº¥k°¼Àx¦s®æªºÈ¥[¤J¦r¨åª«¥ó
Next
End With
With ¤u§@ªí1
If .AutoFilterMode = False Then .Range("A:B").AutoFilter '°²¦p¤u§@ªí«D¦Û°Ê¿z¿ïª¬ºA¡A´N°õ¦æA:BÄæ¸ê®Æ¦Û°Ê¿z¿ï
For Each ky In d.keys '¥H¦r¨åª«¥óªº¯Á¤Þ°µ°j°é
.Range("A:B").AutoFilter 1, ky 'A:BÄæ¦Û°Ê¿z¿ï¡A¥H²Ä¤@Äæ(AÄæ)¡A·Ç«h¬°¦r¨åª«¥ó¯Á¤ÞȰµ¿z¿ï
Set Rng = .AutoFilter.Range.Offset(1, 0).Columns(2).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants) '¦Û°Ê¿z¿ï½d³ò¦V¤U¤@¦Cªº²Ä2Äæ¤¤©Ò¦³¥i¨£Àx¦s®æ¨Ã¥B¬O«DªÅ®æªº³¡¤À½á¤©ÅܼÆRng
If Rng.Count > 0 Then Rng = d(ky) '¦pªGRng³oÓ½d³òªºÀx¦s®æ¼Æ¶q¤j©ó¹s¡Aªí¥Ü¦³¦¹·Ç«h¸ê®Æ¡A´N±N³o¨ÇÀx¦s®æ¶ñ¤J¥Hky¬°¯Á¤ÞȪº¦r¨å¤º®e
Next
.Range("A:B").AutoFilter '¸Ñ°£¦Û°Ê¿z¿ï
End With
Application.ScreenUpdating = True
End Sub |
|