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

[µo°Ý] ¸ê®Æª½¦VÂà¾î¦V±Æ¦C

¥»©«³Ì«á¥Ñ GBKEE ©ó 2013-1-7 18:38 ½s¿è

¦^´_ 1# Genie
¸Õ¸Õ¬Ý
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D(1 To 2) As Object, AR(), Rng As Range, i As Integer, K As Variant
  4.     Set D(1) = CreateObject("SCRIPTING.DICTIONARY")   '¦r¨åª«¥ó
  5.     Set D(2) = CreateObject("SCRIPTING.DICTIONARY")
  6.     Set Rng = Sheets("­ì©l¸ê®Æ").Range("a2")          'Àx¦s®æª«¥ó
  7.     Do
  8.         '1. ¨Ì·Ó A Äæ§@°Ï¤À¡A±N¸ê®Æ¥Ñª½¦V±Æ¦CÅܬ°¾î¦V±Æ¦C¡C
  9.         '2. ­Y¨Ì A Äæ§@°Ï¤À¡A´N¥H A Ä檺­È§@¬°¼ÐÃD¡C
  10.         If D(1).exists(Rng.Value) Then                      '¦r¨åª«¥ó.exists(Rng.Value) ÃöÁä¦r[¦s¦b] ±ø¥ó¦¨¥ß
  11.            AR = D(1)(Rng.Value)                             '°}¦C=¦r¨åª«¥ó(ÃöÁä¦r)ªº¤º®e
  12.            ReDim Preserve AR(UBound(D(1)(Rng.Value)) + 1)   '°}¦CÂX¥R¼W¥[¤@¤¸¯À
  13.            AR(UBound(AR)) = Rng.Cells(1, 3).Value           '°}¦C¼W¥[ªº¤¸¯À=CÄ檺¼Æ­È
  14.            D(1)(Rng.Value) = AR                             '¦r¨åª«¥ó(ÃöÁä¦r)ªº¤º®e=°}¦C
  15.         Else
  16.             D(1)(Rng.Value) = Array(Rng.Cells(1, 3).Value)  '¦r¨åª«¥ó(ÃöÁä¦r)ªº¤º®e=°}¦C
  17.         End If
  18.         '*********************************************
  19.         '1. ¨Ì·Ó B Äæ§@°Ï¤À¡A±N¸ê®Æ¥Ñª½¦V±Æ¦CÅܬ°¾î¦V±Æ¦C¡C
  20.         '2. ­Y¨Ì B Äæ§@°Ï¤À¡A´N¥H A-B Ä檺­È§@¬°¼ÐÃD
  21.         K = "'" & Rng & " - " & Rng.Cells(1, 2)
  22.         If D(2).exists(K) Then
  23.            AR = D(2)(K)
  24.            ReDim Preserve AR(UBound(D(2)(K)) + 1)
  25.            AR(UBound(AR)) = Rng.Cells(1, 3).Value
  26.            D(2)(K) = AR
  27.         Else
  28.             D(2)(K) = Array(Rng.Cells(, 3).Value)
  29.         End If
  30.         Set Rng = Rng.Offset(1)
  31.     Loop Until Rng = ""
  32.     With Sheets("sheet1")
  33.         .Cells.Clear
  34.         If D(1).Count > 0 Then
  35.             i = 1
  36.             For Each K In D(1).keys    'K= ¦r¨åª«¥ó(ÃöÁä¦r)
  37.                 .Cells(1, i) = K
  38.                 .Cells(2, i).Resize(UBound(D(1)(K)) + 1) = Application.WorksheetFunction.Transpose(D(1)(K))  'Ū¨ú¤º®e
  39.                 i = i + 1
  40.             Next
  41.         End If
  42.         If D(2).Count > 0 Then
  43.             i = 10
  44.             For Each K In D(2).keys
  45.                 .Cells(1, i) = K
  46.                 .Cells(2, i).Resize(UBound(D(2)(K)) + 1) = Application.WorksheetFunction.Transpose(D(2)(K))
  47.                 i = i + 1
  48.             Next
  49.         End If
  50.     End With
  51. End Sub
½Æ»s¥N½X

TOP

¦^´_ 5# Genie
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D As Object, AR(), Rng As Range, i As Integer, K As Variant, W As String
  4.     Do
  5.         W = InputBox("½Ð¿ï¾Ü: A Äæ§@°Ï¤À ©Î B Äæ§@°Ï¤À")
  6.         If W = "" Then Exit Sub                         '¨S¿é¤J:Â÷¶}µ{¦¡
  7.     Loop Until UCase(W) = "A" Or UCase(W) = "B"
  8.     Set D = CreateObject("SCRIPTING.DICTIONARY")        '¦r¨åª«¥ó
  9.     Set Rng = Sheets("­ì©l¸ê®Æ").Range("a2")            'Àx¦s®æª«¥ó
  10.     Do
  11.         If UCase(W) = "A" Then K = Rng.Value
  12.         If UCase(W) = "B" Then K = "'" & Rng & " - " & Rng.Cells(1, 2)
  13.         If D.exists(K) Then                             '¦r¨åª«¥ó.exists(Rng.Value) ÃöÁä¦r[¦s¦b] ±ø¥ó¦¨¥ß
  14.             AR = D(K)                                   '°}¦C=¦r¨åª«¥ó(ÃöÁä¦r)ªº¤º®e
  15.             ReDim Preserve AR(UBound(D(K)) + 1)         '°}¦CÂX¥R¼W¥[¤@¤¸¯À
  16.             AR(UBound(AR)) = Rng.Cells(1, 3).Value      '°}¦C¼W¥[ªº¤¸¯À=CÄ檺¼Æ­È
  17.             D(K) = AR                                   '¦r¨åª«¥ó(ÃöÁä¦r)ªº¤º®e=°}¦C
  18.         Else
  19.             D(K) = Array(Rng.Cells(1, 3).Value)         '¦r¨åª«¥ó(ÃöÁä¦r)ªº¤º®e=°}¦C
  20.         End If
  21.         Set Rng = Rng.Offset(1)
  22.     Loop Until Rng = ""
  23.     With Sheets("Âà¸m«á")
  24.         .Cells.Clear
  25.         If D.Count > 0 Then
  26.             i = 1
  27.             For Each K In D.keys    'K= ¦r¨åª«¥ó(ÃöÁä¦r)
  28.                 .Cells(1, i) = K
  29.                 .Cells(2, i).Resize(UBound(D(K)) + 1) = Application.WorksheetFunction.Transpose(D(K))  'Ū¨ú¤º®e
  30.                 i = i + 1
  31.             Next
  32.         End If
  33.     End With
  34. End Sub
½Æ»s¥N½X

TOP

        ÀR«ä¦Û¦b : ¡i¬O§_µo´§¤F¨}¯à¡H¡j¤H¶¡¹Ø©R¦]¬°µu¼È¡A¤~§óÅã±o¬Ã¶Q¡CÃø±o¨Ó¤@½ë¤H¶¡¡AÀ³°Ý¬O§_¬°¤H¶¡µo´§¤F¦Û¤vªº¨}¯à¡A¦Ó¤£­n¤@¨ý¨Dªø¹Ø¡C
ªð¦^¦Cªí ¤W¤@¥DÃD