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

[µo°Ý] Â^¨ú³øªí¤¤©Ò»Ý¸ê®Æ

¦^´_ 3# asus103
  1. Sub Ex()
  2. Dim A As Range, Ar(), C, d As Object, d1 As Object, d2 As Object, r&, MyClass$, Ky, s%, i%
  3. Set d = CreateObject("Scripting.Dictionary")
  4. Set d1 = CreateObject("Scripting.Dictionary")
  5. Set d2 = CreateObject("Scripting.Dictionary")
  6. With Sheets("Sheet1")
  7.   For Each A In .Range(.[B1], .Cells(.Cells.Rows.Count, 2).End(xlUp))
  8.      If A Like "*¯Z" Then MyClass = A.Value
  9.      If Replace(A.Value, "¡@", "") = "¾Ç¸¹" Then Ar = .Range(A, A.End(xlToRight)).Value
  10.      If Val(A.Value) <> 0 And InStr(A, "-") = 0 Then
  11.        s = 0
  12.        For Each C In Ar
  13.         If C <> "" Then d1(C) = ""
  14.          If C = "©m¦W" Then d1("¯Z¯Å") = "": d(A & "¯Z¯Å") = MyClass
  15.          d2(A.Value) = ""
  16.          d(A & C) = A.Offset(, s).Value
  17.          s = s + 1
  18.        Next
  19.     End If
  20.   Next
  21. End With
  22. With Sheets("Sheet4")
  23. .Cells = ""
  24. r = 2
  25. .[A1].Resize(, d1.Count) = d1.KEYS
  26. For Each Ky In d2.KEYS
  27.    For i = 1 To d1.Count
  28.       .Cells(r, i) = d(Ky & .Cells(1, i))
  29.    Next
  30. r = r + 1
  31. Next
  32. End With
  33. End Sub
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 10# asus103
µ{¦¡´£¨úªº¾Ç¸¹¤w¸g¬O¼Æ¦r¤F
  1. Sub Ex()
  2. Dim A As Range, Ar(), C, d As Object, d1 As Object, d2 As Object, r&, MyClass$, Ky, s%, i%
  3. Set d = CreateObject("Scripting.Dictionary")
  4. Set d1 = CreateObject("Scripting.Dictionary")
  5. Set d2 = CreateObject("Scripting.Dictionary")
  6. With Sheets("Sheet1")
  7.   For Each A In .Range(.[B1], .Cells(.Cells.Rows.Count, 2).End(xlUp))
  8.      If A Like "*¯Z" Then MyClass = A.Value
  9.      If Replace(A.Value, "¡@", "") = "¾Ç¸¹" Then Ar = .Range(A, A.End(xlToRight)).Value
  10.      If Val(A.Value) <> 0 And InStr(A, "-") = 0 Then
  11.        s = 0
  12.        For Each C In Ar
  13.         If C <> "" Then d1(C) = ""
  14.          If C = "©m¦W" Then d1("¯Z¯Å") = "": d(A & "¯Z¯Å") = MyClass
  15.          d2(A.Value) = ""
  16.          d(A & C) = A.Offset(, s).Value
  17.          s = s + 1
  18.        Next
  19.     End If
  20.   Next
  21. End With
  22. With Sheets("Sheet4")
  23. .Cells = ""
  24. r = 2
  25. .[A1].Resize(, d1.Count) = d1.KEYS
  26. For Each Ky In d2.KEYS
  27.    For i = 1 To d1.Count
  28.       .Cells(r, i) = IIf(d(Ky & .Cells(1, i)) = "", -1, d(Ky & .Cells(1, i)))
  29.    Next
  30. r = r + 1
  31. Next
  32. End With
  33. End Sub
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 12# asus103
  1. Sub Ex()
  2. Dim A As Range, Ar(), C, d As Object, d1 As Object, d2 As Object, r&, MyClass$, Ky, s%, i%
  3. Set d = CreateObject("Scripting.Dictionary")
  4. Set d1 = CreateObject("Scripting.Dictionary")
  5. Set d2 = CreateObject("Scripting.Dictionary")
  6. With Sheets("Sheet1")
  7.   For Each A In .Range(.[B1], .Cells(.Cells.Rows.Count, 2).End(xlUp))
  8.      If A Like "*¯Z" Then MyClass = A.Value
  9.      If Replace(A.Value, "¡@", "") = "¾Ç¸¹" Then Ar = .Range(A, A.End(xlToRight)).Value
  10.      If Val(A.Value) <> 0 And InStr(A, "-") = 0 Then
  11.        s = 0
  12.        For Each C In Ar
  13.         If C <> "" Then d1(C) = ""
  14.          If C = "©m¦W" Then d1("¯Z¯Å") = "": d(A & "¯Z¯Å") = Replace(Replace(Replace(Replace(Replace(Replace(MyClass, "°ª", ""), "¦~", ""), "¯Z", ""), "¤T", 3), "¤G", 2), "¤@", 1)
  15.          d2(A.Value) = ""
  16.          d(A & C) = IIf(s > 5, "", "'") & A.Offset(, s).Text
  17.          s = s + 1
  18.        Next
  19.     End If
  20.   Next
  21. End With
  22. With Sheets("Sheet4")
  23. .Cells = ""
  24. r = 2
  25. .[A1].Resize(, d1.Count) = d1.KEYS
  26. For Each Ky In d2.KEYS
  27.    For i = 1 To d1.Count
  28.       .Cells(r, i) = IIf(d(Ky & .Cells(1, i)) = "", -1, d(Ky & .Cells(1, i)))
  29.    Next
  30. r = r + 1
  31. Next
  32. End With
  33. End Sub
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

§ï³o¦æ
d(A & C) = IIf(s > 2, "", "'") & A.Offset(, s).Text
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 17# asus103

http://forum.twbts.com/thread-20-1-1.html
¥ý¹ï¸Óª«¥óªºÄݩʲz¸Ñ«á¦AÄ~Äò°Q½×
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 19# asus103


    dictionaryª«¥óÆ[©À¥i¥Î®e¾¹¨Ó°µ¤ñ³ë
³o­Ó®e¾¹¥L¬OÀHµÛ¸ê®Æ¦h¹è¦Ó¸òµÛ²£¥ÍÀx¦ìªº
³o­ÓÀx¦ì¥i¥H¥Ñ¨Ï¥ÎªÌ¦Û¦æ½s¸¹¨Óªí¥Ü
³o­Ó½s¸¹´N¬O¤Þ¼Æ¤¤ªº(index)key¡AÃöÁä¦r
¦Ü©ó³o­ÓÀx¦ì­n©ñ¸mªºªF¦è´N¬O(content)item¡A¤º®e
°Ñ¦ÒVBA»¡©ú
Dictionary ª«¥ó
               
´y­z

ª«¥ó¡A¥Î©óÀx¦s¸ê®ÆÃöÁä¦r©M¶µ¥Ø¹ï¡C

»yªk

Scripting.Dictionary

½Ðª`·N

Dictionary ¥i¥H¬O¥ô¦ó«¬¦¡ªº¸ê®Æªº¶µ¥Ø³QÀx¦s¦b°}¦C¤¤¡C¨C­Ó¶µ¥Ø³£»P¤@­Ó°ß¤@ªºÃöÁä¦r¬ÛÃö¡C¸ÓÃöÁä¦r¥Î¨Ó¨ú¥X³æ­Ó¶µ¥Ø¡A³q±`¬O¾ã¼Æ©Î¦r¦ê¡A¥i¥H¬O°£°}¦C¥~ªº¥ô¦ó«¬ºA¡C
¥Ñ¥H¤W»¡©ú¥iª¾¡A
Dictionary ´N¬O¤@­Ó®e¾¹ª«¥ó¡C
¦A¬Ý¥L¦³­þ¨Ç¤èªk?
add   ¥[¤J¶µ¥Ø
exists   Àˬd¶µ¥Ø¬O§_¦s¦b
items    ¶Ç¦^©Ò¦³¶µ¥Ø°}¦C
keys     ¶Ç¦^©Ò¦³¶µ¥Ø¤§ÃöÁä¦r°}¦C
remove   ²¾°£¶µ¥Ø
removeall   ²¾°£©Ò¦³¶µ¥Ø

VBA»¡©ú¤¤¹ïADD¤èªk¦³´£¨ì
Add ¤èªk (¥Ø¿ý)   

´y­z

¥[¤J¤@¹ï¬Û¹ïÀ³ªºÃöÁä¦r©M¶µ¥Ø¨ì Dictionary ª«¥ó¡C

»yªk

object.Add key, item

Add¤èªkªº»yªk¦³¦p¤U´X­Ó³æ¤¸¡G

³æ¤¸ ´y­z
Object ¥²­n¤Þ¼Æ¡C¤@­Ó Dictionary ª«¥óªº¦W¦r¡C
Key ¥²­n¤Þ¼Æ¡C»P©Ò¥[¤Jªº¶µ¥Ø¬ÛÃöªºÃöÁä¦r¡C
Item ¥²­n¤Þ¼Æ¡C»P©Ò¥[¤JªºÃöÁä¦r¬ÛÃöªº¶µ¥Ø¡C

½Ðª`·N

¦pªG¸ÓÃöÁä¦r¤w¸g¦s¦b¡A«h²£¥Í¤@­Ó¿ù»~¡C
©Ò¥H¡A·í¨Ï¥ÎADD¤èªk®É­Y¥¼¥ý¹ïÃöÁä¦r¬O§_¦s¦b°µÀˬd¡A­Y¹J¨ì¤w­«½Æ®É´N·|²£¥Í¿ù»~¡C
©Ò¥H§Ú¨Ï¥Îd(key)=item³o¼Ëªº»yªk¥iÁקK³o¼Ëªº³Â·Ð¡C
©Ò¥H·í¸ê®Æ¤¤¡A¦P¼ËÃöÁä¦r©Ò°Ñ·Ó¨ìªº¤º®e­Y¤£¬Û¦P®É¡A¦¹ÃöÁä¦rÀx¦ìªº¤º®e±N·|³Q³Ì«á«ü©wªº­È¨ú¥N¡C
©Ò¥H¡Adictionaryª«¥óªºcountÄݩʳ̲³æªº»¡ªk´N¬O¡Adictionaryª«¥óªºÃöÁä¦r¼Æ¶q¡C

½Ðª`·N¸Ó³sµ²¤å³¹¤¤»yªkªº»¡©ú
dictionary_object.Add index, content
index´N¬O¯Á¤Þ­Èkey
content´N¬O¤º®eitem
d1(C) = ""³o´N¬O«ü©wÃöÁä¦rCªº¨º­ÓÀx¦ì¯dªÅ«O¦s
©Ò¥H§Aªº¸ÑÄÀ¨S¿ù¡A­Yc¤£¦s¦bd1.COUNT´N·|¥[1
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

        ÀR«ä¦Û¦b : ¯à·F¤£·F¡A¤£¦p­W·F¹ê·F¡C
ªð¦^¦Cªí ¤W¤@¥DÃD