- ©«¤l
- 5923
- ¥DÃD
- 13
- ºëµØ
- 1
- ¿n¤À
- 5986
- ÂI¦W
- 0
- §@·~¨t²Î
- win10
- ³nÅ骩¥»
- Office 2010
- ¾\ŪÅv
- 150
- ©Ê§O
- ¨k
- ¨Ó¦Û
- ¥xÆW°ò¶©
- µù¥U®É¶¡
- 2010-5-1
- ³Ì«áµn¿ý
- 2022-1-23
        
|
¦^´_ 11# greetingsfromtw
VBA ¦³³\¦h¼gªk¥i¹F¨ì¬Û¦Pªº®ÄªG- Option Explicit
- Sub Ex()
- Dim D As Object, AR(), i As Integer
- Set D = CreateObject("scripting.dictionary")
- AR = Range("a1:d" & Cells(Rows.Count, 1).End(xlUp).Row)
- For i = 1 To UBound(AR)
- If Not D.exists(AR(i, 2) & AR(i, 3) & AR(i, 4)) Then '** exists ¶Ç¦^¦r¨åª«¥ó¬O§_¦³³okeyÈ ¦³ True :µL False
- D(AR(i, 2) & AR(i, 3) & AR(i, 4)) = Application.Index(AR, i) '** ¤u§@ªí¨ç¼Æ Index
- End If
- Next
- With Range("H1")
- .CurrentRegion.Clear
- .Resize(D.Count, 4) = Application.Transpose(Application.Transpose(D.items))
- End With
- End Sub
- Sub Ex1()
- Dim D As Object, i As Integer
- Set D = CreateObject("scripting.dictionary")
- With Range("a1:d" & Cells(Rows.Count, 1).End(xlUp).Row)
- For i = 1 To .Rows.Count
- If Not D.exists(.Cells(i, 2) & Cells(i, 3) & .Cells(i, 4)) Then '** exists ¶Ç¦^¦r¨åª«¥ó¬O§_¦³³okeyÈ ¦³ True :µL False
- D(.Cells(i, 2) & Cells(i, 3) & .Cells(i, 4)) = .Rows(i)
- End If
- Next
- End With
- With Range("H1")
- .CurrentRegion.Clear
- .Resize(D.Count, 4) = Application.Transpose(Application.Transpose(D.items))
- End With
- End Sub
- Sub Ex2()
- Dim AR, ArSt(), i As Integer, St As String
- With Range("a1:d" & Cells(Rows.Count, 1).End(xlUp).Row)
- For i = 1 To .Rows.Count
- St = .Cells(i, 2) & Cells(i, 3) & .Cells(i, 4)
- If IsEmpty(AR) Then
- ReDim AR(1 To 1): AR(1) = .Rows(i)
- ReDim ArSt(1 To 1): ArSt(1) = St
- Else
- If UBound(Filter(ArSt, St)) = -1 Then
- 'Filter ¨ç¼Æ¶Ç¦^¤@Ó±q¹s¶}©lªº°}¦C¡A¸Ó°}¦C¥]§t°ò©ó«ü©w¿z¿ï·Ç«hªº¤@Ó¦r¦ê°}¦Cªº¤l¶°¡C
- '»yªk Filter(sourcesrray, match[, include[, compare]])
- '¦pªG¦b sourcearray ¤¤¨S¦³µo²{»P match ¬Û²Å¦XªºÈ¡AFilter ¶Ç¦^¤@ÓµL°}¦C¡C¦pªG sourcearray ¬O Null ©Î¤£¬O¤@Ó¤@ºû°}¦C¡A«h²£¥Í¿ù»~¡C
- 'Filter ¨ç¼Æ©Ò¶Ç¦^ªº°}¦C¡A¨ä²Õ¦¨¶µ¥Ø¼Æè¦n¬O©Ò§ä¨ìªº²Å¦X¶µ¥Ø¼Æ¡C
- ReDim Preserve ArSt(1 To UBound(ArSt) + 1)
- ArSt(UBound(ArSt)) = St
- ReDim Preserve AR(1 To UBound(AR) + 1)
- AR(UBound(AR)) = .Rows(i)
- End If
- End If
- Next
- End With
- With Range("H1")
- .CurrentRegion.Clear
- .Resize(UBound(AR), 4) = Application.Transpose(Application.Transpose(AR))
- End With
- End Sub
½Æ»s¥N½X |
|