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

[µo°Ý] ±Æ°£Àx¦s®æ¤ºªº­«½Æ¸ê®Æ

¥»©«³Ì«á¥Ñ stillfish00 ©ó 2013-10-22 20:05 ½s¿è

¦^´_ 1# ¤Ú§J´µ
  1. Sub Test()
  2.   Dim ar, d, i As Long, s
  3.   
  4.   Set d = CreateObject("scripting.dictionary")
  5.   With Sheets(1)
  6.   With .Range(.[A2], .[A2].End(xlDown)).Resize(, 2)
  7.     ar = .Value
  8.     For i = 1 To UBound(ar)
  9.         d.RemoveAll
  10.         For Each s In Split(ar(i, 1), ",")
  11.           d(s) = ""
  12.         Next
  13.         ar(i, 1) = Join(d.keys, ",")
  14.         ar(i, 2) = d.Count
  15.     Next
  16.     .Offset(, 2).Value = ar
  17.   End With
  18.   End With
  19. End Sub
½Æ»s¥N½X

TOP

¥»©«³Ì«á¥Ñ stillfish00 ©ó 2013-10-23 14:39 ½s¿è

¦^´_ 3# ¤Ú§J´µ
¦r¨åª«¥ó»¡©ú¥i°Ñ¦Ò http://forum.twbts.com/thread-20-1-1.html
¨ä¾l¨ç¦¡½Ð¬d¾\»¡©ú¡C

¥D­n¬yµ{¬°¡G
¹ïÀx¦s®æ¤å¦r¥H³r¸¹¤À¸Ñ¦¨°}¦C (Split¨ç¦¡)¡A
µM«á¦s¤J¦r¨å®É¶¶«K§Q¥Î¦r¨åª«¥ó  Áä­È¥²©w°ß¤@  ¨Ó¶i¦æ¿z¿ï (d(s) = "")¡A
¨ú¦^¿z¿ï¹Lªº©Ò¦³­È (d.keys)¡A¦A¥Î³r¸¹¦X¦¨³æ¤@¦r¦ê (Join¨ç¦¡)¡AµM«á¼g¦^Àx¦s®æ¡C
  1. Sub Test()
  2.   Dim ar, d, i As Long, s
  3.   
  4.   Set d = CreateObject("scripting.dictionary")  '«Ø¥ß¦r¨åª«¥ó
  5.   With Sheets(1)
  6.   With .Range(.[A2], .[A2].End(xlDown)).Resize(, 2)  '¬Û·í©ó[A2:B8]
  7.     ar = .Value  '¤@¦¸©Ê±qexcel¨ú¥X
  8.     For i = 1 To UBound(ar)
  9.         d.RemoveAll  '²¾°£©Ò¦³­È
  10.         For Each s In Split(ar(i, 1), ",")  '¥H³r¸¹¤À¸Ñ¬°°}¦C
  11.           d(s) = ""
  12.         Next
  13.         ar(i, 1) = Join(d.keys, ",")  'µ²¦X°}¦C¬°³æ¤@¦r¦ê
  14.         ar(i, 2) = d.Count '¤¸¯À­Ó¼Æ
  15.     Next
  16.     .Offset(, 2).Value = ar  '¤@¦¸©Ê¼g¦^excel
  17.   End With
  18.   End With
  19. End Sub
½Æ»s¥N½X

TOP

¦^´_ 6# ¤Ú§J´µ
¦r¨å¦p¦P°}¦C©ÎCollection¡A¥i¥H·Q¦¨¬O¦s©ñ¦hµ§¸ê®Æªº®e¾¹¡A
¨ä¦s©ñªº¨C¤@µ§¸ê®Æ³£·|¥]§t¨â³¡¤À¡G¯Á¤Þ­È(©ÎºÙÁä­È¡BKey)©M¸ê®Æ¤º®e
¹³°}¦C¤@¼Ë¡A¯Á¤Þ­È¥²¶·°ß¤@
¦ý©M°}¦C¤ñ¸û°_¨Ó¡A¨Ï¥Î¦r¨åªº¦n³B«Ü¦h¡A¦p¡G
        ¯Á¤Þ­È¤£¥²¬°¼Æ¦r¡A¥i¥H¬O¦³·N¸qªº¦WºÙ¡C
        ®e©öÀH®É·s¼W©M²¾°£¡A¤£¥²¨Æ¥ý«Å§i°}¦C¤j¤p¡C
        ¦³Exists¤èªk®e©ö¬d§ä¬O§_¥]§t¦³¬Y­Ó¤¸¯À¡A¤£¥²¨Ï¥Î°j°é³v¤@Àˬd¡C

«e­±¥Îªº d(s) ·N«ä´N¬O¨ú±o¦r¨åd¤¤¡A¹ïÀ³¨ìsªº¨ºµ§¸ê®Æªº¤º®e¡C
d(s) = "" ´N¬O­×§ï¹ïÀ³¨ìsªº¸Óµ§¸ê®Æªº¤º®e¬°""

¤S¦]¬°¦r¨åªº¤@­Ó¯S©Ê¡G
·í¹ï¦r¨å¥Î¯Á¤Þ¨ú¦^®É¡A­Y¦r¨å¤£¥]§t¸Ó¯Á¤Þ­È®É·|¦Û°Ê¥[¤J¸Ó¯Á¤Þ­È¨ì¦r¨å¤º
©Ò¥H¥Î d(s) = "" ­×§ï¤º®e®É¡A¤]·|§â¦r¨å¤¤¤£¦s¦bªºs¥[¤J¡C

©ÎªÌ¡A§A¤]¥i¥H¥Î³o¼Ëªº¤èªk¼g¡G
  1.   For Each s In Split(ar(i, 1), ",")
  2.     If Not d.exists(s) Then
  3.       d.Add s, ""
  4.     End If
  5.   Next
½Æ»s¥N½X

TOP

        ÀR«ä¦Û¦b : §Ú­Ì³Ì¤jªº¼Ä¤H¤£¬O§O¤H¡D¥i¯à¬O¦Û¤v¡C
ªð¦^¦Cªí ¤W¤@¥DÃD