ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

­«½Æ­È¤À²Õ

¤£¥Î¦r¨åª«¥óªº¼gªk
  1. Option Explicit
  2. Sub Ex_­«½Æ­È¤À²Õ()
  3.     Dim Rng As Range, Ar(), Arr(), F As Boolean
  4.     Set Rng = Range("A1").CurrentRegion     '**Set (³]¥ßª«¥ó):½s¸¹²Õ§O¸ê®ÆÄæ¦ì©Ò¦bªº¦ì¸m
  5.     Application.ScreenUpdating = False         '** ¦pªG¶}±Ò¿Ã¹õ§ó·s¡A«h¥»ÄݩʭȬ° True¡C ¥iŪ¼gªº Boolean
  6.     With Cells(1, Columns.Count - 1)                '**With :³¯­z¦¡·|°w¹ï°õ¦æ¤@¨t¦C³¯­z¦¡ªº³æ¤@ª«¥ó
  7.         .CurrentRegion.Clear                                   '**CurrentRegion¶Ç¦^Rangeª«¥ó¡A¥Nªí¥Ø«eªº°Ï°ì¡C ¥Ø«e°Ï°ì¬O«ü¥H¥ô·NªÅ¥Õ¦C¤ÎªÅ¥ÕÄ檺²Õ¦X¬°Ãä¬Éªº½d³ò
  8.         Rng.Columns(2).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Cells(1), Unique:=True                       '**AdvancedFilte:¶i¶¥¿z¿ï (²Õ§O¤£­«½Æ)
  9.         .Range("A:A").Sort Key1:=.Cells(1), Header:=xlYes, Order1:=xlAscending   '**Sort ±Æ§Ç(²Õ§O)
  10.         Arr = .Range("A:A").SpecialCells(xlCellTypeConstants).Value                          '** ²Õ§O (±Æ§Ç«á)¸m¤J°}¦C¤¤
  11.         Ar = Arr
  12.         Ar(1, 1) = "½s¸¹"
  13.         Rng.Copy .Cells                   '**½Æ»s½s¸¹²Õ§O¸ê®Æ
  14.        .CurrentRegion.Sort Key1:=.Cells(1), Order1:=xlAscending, Key2:=.Cells(1, 2), Header:=xlYes, Order2:=xlAscending   '**Sort ±Æ§Ç(1½s¸¹2èʧO)
  15.         Set Rng = .Range("A2")   '**Set (³]¥ßª«¥ó): ½Æ»s½s¸¹²Õ§O¸ê®Æ«áªº.Range("A2")¦ì¸m
  16.     End With
  17.    '******­«½Æ­È¤À²Õ ****
  18.      F = True            '**FÅܼƬ°¥¬ªL­È(Boolean) : §P©w:½s¸¹¤À²Õ¬O§_­«½Æ
  19.    Do While Rng.Range("A2") <> ""     '**While °j°é¹B¦æªº±ø¥ó
  20.             With Rng
  21.                 If .Range("a1") = .Range("a2") And (.Range("b1") <> .Range("b2") And .Range("b1") <> "" And .Range("b2") <> "") Then
  22.                      ' Range("a1") = .Range("a2")**¦P¤@½s¸¹** : And (.Range("b1") <> .Range("b2")**¤£¦PèʧO** And .Range("b1") <> "" And .Range("b2") <> ""
  23.                     If F Then         '**¤£­«½Æ (½s¸¹¤À²Õ)
  24.                         F = False    '**­«½Æ (½s¸¹¤À²Õ)
  25.                         ReDim Preserve Ar(1 To UBound(Ar), 1 To UBound(Ar, 2) + 1)  '** PreserveÃöÁä¦r, ¥u¯àÅܧó³Ì«á¤@­Óºû«×ªº¤j¤p, ¦Ó¥B¤´µM«O¯d°}¦Cªº¤º®e
  26.                         Ar(1, UBound(Ar, 2)) = .Value                                                                 '** ¸m¤J½s¸¹
  27.                         Ar(Application.Match(.Range("b1"), Arr, 0), UBound(Ar, 2)) = .Range("b1")
  28.                         '**Application.Match(.Range("b1"), Arr, 0)  '** ©ó²Õ§O(±Æ§Ç«á)°}¦C¤¤´M§ä ¸Ó²Õ§Oªº¦ì¸m
  29.                     End If
  30.                      Ar(Application.Match(.Range("b2"), Arr, 0), UBound(Ar, 2)) = .Range("b2")
  31.                   End If
  32.             End With
  33.             If Rng <> Rng.Range("A2") Then F = True    '**¤£¦Pªº½s¸¹®É,FÅܼƬ°:¤£­«½Æ (½s¸¹¤À²Õ)
  34.             Set Rng = Rng.Range("A2")                               '**Set (³]¥ßª«¥ó) ¤U¤@­Ó½s¸¹¦ì¸m
  35.     Loop
  36.    With Range("f1")
  37.         .CurrentRegion.Clear
  38.         .Resize(UBound(Ar, 2), UBound(Ar, 1)) = Application.Transpose(Ar)    '**Application.Transpose(Ar): ½Âà(Ar),Ar¬°¤Gºû°}¦C
  39.     End With
  40.     Cells(1, Columns.Count - 1).CurrentRegion.Clear
  41.     Application.ScreenUpdating = True
  42. End Sub
½Æ»s¥N½X
·P®¦ªº¤ß......(¦b³Â»¶®a±Ú°Q½×°Ï.¥Î¤ß¾Ç²ß·|¦³¶i¨Bªº)
¦ý¸ê·½µL­­,«á´©¦³­­,  ¤@¤Ñ1¤¸ªºÃÙ§U,¤H¤H¦³¯à¤O.

TOP

        ÀR«ä¦Û¦b : ¬O«D·í±Ð¨|¡AÆg¬ü§@ĵ±§¡C
ªð¦^¦Cªí ¤W¤@¥DÃD