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

[µo°Ý] ¦p¦ó±NARR¸ê®ÆÂà¤JBÄ檺ÅçÃÒ²M³æ

¦^´_ 1# dou10801


    ÁÂÁ«e½úµoªí¦¹¥DÃD»P½d¨Ò
¬O³o·N«ä¶Ü?


.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(arr, ",")
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 1# dou10801


    ¥H¤U¬O«á¾ÇÂǦ¹ÃD½m²ß¦r¨å¥h°£­«½Æªº¤ß±o»Pµù¸Ñ
Option Explicit
Sub ¸ê®Æ¥H¦r¨å¥h°£­«½ÆÂରÅçÃÒ²M³æ()
Dim i&, Y, arr
'¡ô«Å§iÅܼÆ:i¬Oªø¾ã¼Æ,(Y,arr)¬O³q¥Î«¬ÅܼÆ
Set Y = CreateObject("Scripting.Dictionary")
'¡ô¥OY¬O ¦r¨å
For i = 1 To [A65536].End(xlUp).Row
'¡ô³]¶¶°j°é!i±q1¨ìAÄ榳¤º®eÀx¦s®æ³Ì«á¦C¸¹
   Y(Trim(Cells(i, "A"))) = ""
   '¡ô¥O°j°éÀx¦s®æªº­È¥h°£ÀY§ÀªºªÅ¥Õ¦r¤¸«á·íkey,item¬OªÅ¦r¤¸,©ñ¤J¦r¨å¤¤
Next
arr = Application.Transpose(Application.Transpose(Y.KEYS))
'¡ô¥Oarr¬O¤@ºû°}¦C!¥ÎY¦r¨åªºkeyÂà¸m¨â¦¸ªº­È©ñ¤J³o°}¦C¤¤
With [¤u§@ªí1!B:B].Validation
      .Delete
      .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(arr, ",")
      '¦]¬°Formula1:=«á­±­nµ¹¤@­Ó","²Å¸¹¥i¤À³Îªº¦r¦ê,©Ò¥HJOIN() ´N¥i¥H¤F
      'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/join-function

End With
Set Y = Nothing
Erase arr
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 4# dou10801


   ÁÂÁ«e½ú¦^´_
¤Ó¦n¤F,¤S¾Ç¨ì¤@­Ó¸gÅç,«á¾Ç±N¦r¨å»P¤@ºû°}¦C·d²V¤F!ÁÂÁ¤À¨É´ú¸Õ¤ß±o
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2022-12-21 11:30 ½s¿è

¦^´_ 6# singo1232001


    ÁÂÁ«e½ú«ü¾É
«á¾Ç·Pı¦n©¯¹B,¯à±o¨ì«e½úªº¦^ÂЫü¾É
«á¾Ç¾Ç¨ì«e½ú«ü¾Éªº¤ß±o,¥Î¥ßÅé°±¨®³õ¤ñ³ë:
1.¤@¯ë°}¦C¬O¾r¾p¦Û¤v¶}¶i°±¨®,¦Û¤v¨ú¨®¶}¥X (Array)
2.¦r¨å¹³¬O¦Û°Ê¥ßÅé°±¨®³õ¾÷¾¹,±N¨®¿é°e¨ì¥ßÅé°±¨®®æ,¾÷¾¹¨ú¥X¨®¤l
3.°±¨®®æs¬O°}¦C,¨®¤l¬O°}¦C­È (items)
4.¿é°eªº¾÷¾¹s¤]¬O°}¦C (keys)
5.¦Û°Ê¥ßÅé°±¨®³õªº¨®¤l­n³z¹L¾÷¾¹¤~¯à¶i¥X

½Ð«e½ú¦A«ü¾É,ÁÂÁÂ
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2022-12-21 11:56 ½s¿è

¦^´_ 6# singo1232001


    «e½úªº¸É¥Rª¾ÃÑ¥]§t«Ü¼s,¦³¨Ç«á¾ÇÁÙ¤£·|¥Î,½Ð«e½ú¥H«á¦A´£ÂI
¦Ü©ó¦r¨å¸Ìªº°}¦C¤j¤p¤£¯à§ï,«á¾Ç¦³¾Ç¨ì¥ý±N¦r¨å¸Ì©ñ¤J¤@­Ó°÷¥ÎªºªÅ°}¦C,´N¥i¥HÅܳq¨Ï¥Î
ÁÂÁ«e½ú¦A«ü¾É

¸É¥R¤ß±o:
¦r¨å¥i³z¹LAdd,Remove,RemoveAll°µ¦r¨å¼W´î
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2022-12-26 13:56 ½s¿è

¦^´_ 11# singo1232001


    ÁÂÁ«e½ú«ü¾É
«á¾ÇÂǦ¹©«²ß±o°}¦C±Æ§Ç¬ÛÃöª¾ÃÑ,½Ð«e½ú¦A«ü¾É

°õ¦æµ²ªG:


µ{¦¡½X¤ß±oµù¸Ñ¦p¤U:

Option Explicit
Sub SortArray()
Dim Arr, Y, i
'¡ô«Å§iÅܼÆ:Arr,Y,i¬O³q¥ÎÅܼÆ
Arr = Array("4A", "5A", "6A", "7A", "2A", "4A", "6A", "1A", "2A", "3A")
'¡ô¥OArr¬O¤@ºû°}¦C
Set Y = CreateObject("Scripting.Dictionary")
'¡ô¥OY¬O ¦r¨å
For Each i In Arr
'¡ô³]¶¶°j°é!¥Oi¬O Arr°}¦C¸Ìªº¤@­û,±q«e­±½ü¨ì«á­±
   Y(i) = ""
   '¡ô¥O¥HiÅܼƭȬ°key,item¬OªÅ¦r¤¸,©ñ¤JY¦r¨å¤¤
Next
Arr = Y.KEYS()
'¡ô¥OArr­Ë½Õ­ì¨Ó°}¦C­È,´«¸ËY¦r¨åkey²Õ¦¨ªº°}¦C­È
QuickSort Arr, LBound(Arr), UBound(Arr)
'¡ôµ¹QuickSort³o¦Û­q¨ç¼Æ3­Ó ÅܼƥO¨ä¦^¶Ç­È
'1.arÅܼÆ: Arr°}¦C
'2.iLo&: LBound(Arr):Arr°}¦C³Ì¤p¯Á¤Þ¸¹¼Æ
'3.iHi&: UBound(Arr):Arr°}¦C³Ì¤j¯Á¤Þ¸¹¼Æ

Debug.Print Join(Arr, ",")
'¡ô¦b§Y®É¹Bºâµ¡Åã¥Ü: ¥H","²Å¸¹³sµ² Arr°}¦C­Èªº¦r¦êµ²ªG
End Sub


Function QuickSort(ByRef ar, ByVal iLo As Long, ByVal iHi As Long)
'«Å§iar¬O³q¥Î«¬ÅܼÆ,ByRef_«ü©w¶Ç»¼¤Þ¼Æªº¤è¦¡¬O©I¥sµ{¦¡¥i¥HÅܧó©I¥sµ{¦¡¤º¤Þ¼Æ°ò¦ªºÅܼƭȡC
'«Å§iiLo, iHi ¬Oªø¾ã¼Æ,ByVal«ü©w¤Þ¼Æ¬O¥H ¶Ç­È¤è¦¡¶Ç»¼

Dim pivot As Variant, tmp As Variant, lo As Long, hi As Long
'¡ô«Å§iÅܼÆ:(pivot,tmp)¬O³q¥Î«¬ÅܼÆ,(lo,hi)¬Oªø¾ã¼Æ
lo = iLo
'¡ô¥Olo³o³q¥Î«¬ÅܼƬOiLoÅܼƥNªº­È (Arr°}¦C³Ì¤p¯Á¤Þ¸¹¼Æ)
hi = iHi
'¡ô¥Ohi³o³q¥Î«¬ÅܼƬOiHiÅܼƥNªº­È (Arr°}¦C³Ì¤j¯Á¤Þ¸¹¼Æ)
pivot = UCase(ar((lo + hi) \ 2))
'¡ô¥Opivot¬O ((Arr°}¦C³Ì¤p¯Á¤Þ¸¹¼Æ+³Ì¤j¯Á¤Þ¸¹¼Æ)/2 ¥h§À¾ã¼Æ­È)¯Á¤Þ¸¹ªºar°}¦C­È¦AÂର¤j¼g­^¤å¦r
While lo <= hi
'¡ô³]·íloÅܼÆ<= hiÅÜ¼Æ ±ø¥ó¦¨¥ß°õ¦æªº°j°é
   While (UCase(ar(lo)) < pivot And lo < iHi)
   '¡ô³]·íloÅܼư}¦C­È¦AÂà¤j¼g < pivotÅܼÆ,¦Ó¥BloÅÜ¼Æ < iHiÅܼÆ,±ø¥ó¦¨¥ß°õ¦æªº°j°é
      lo = lo + 1
      '¡ô¥OloÅܼƲ֥[ 1
   Wend
   While (UCase(ar(hi)) > pivot And hi > iLo)
   '¡ô³]·íhiÅܼư}¦C­È¦AÂà¤j¼g > pivotÅܼÆ,¦Ó¥BhiÅÜ¼Æ > iLoÅܼÆ,±ø¥ó¦¨¥ß°õ¦æªº°j°é
      hi = hi - 1
      '¡ô¥OhiÅܼƳv¦¸´î 1
   Wend
   If lo <= hi Then
   '¡ô¦pªG loÅÜ¼Æ <= hiÅܼÆ
      tmp = ar(lo)
      '¡ô¥Otmp³o³q¥Î«¬ÅܼƬO loÅܼƯÁ¤Þ¸¹ªºar°}¦C­È
      ar(lo) = ar(hi)
      '¡ô¥OloÅܼƯÁ¤Þ¸¹ªºar°}¦C­È¬O hiÅܼƯÁ¤Þ¸¹ªºar°}¦C­È
      ar(hi) = tmp
      '¡ô¥OhiÅܼƯÁ¤Þ¸¹ªºar°}¦C­È¬O tmp³o³q¥Î«¬ÅܼƭÈ
      lo = lo + 1
      '¡ô¥OloÅܼƲ֥[ 1
      hi = hi - 1
      '¡ô¥OhiÅܼƳv¦¸´î 1
      tmp = ""
      '¡ô¥Otmp³o³q¥Î«¬ÅܼƬO ªÅ¦r¤¸
   End If
Wend
If hi > iLo Then QuickSort ar, iLo, hi
'¡ô¦pªGhiÅÜ¼Æ > iLoÅܼÆ,µ¹QuickSort³o¦Û­q¨ç¼Æ3­Ó ÅܼƥO¨ä¦^¶Ç­È
'1.arÅܼÆ: ar°}¦C
'2.iLo&: iLoÅܼÆ
'3.iHi&: hiÅܼÆ

If lo < iHi Then QuickSort ar, lo, iHi
'¡ô¦pªGloÅÜ¼Æ < iHiÅܼÆ,µ¹QuickSort³o¦Û­q¨ç¼Æ3­Ó ÅܼƥO¨ä¦^¶Ç­È
'1.arÅܼÆ: ar°}¦C
'2.iLo&: loÅܼÆ
'3.iHi&: iHiÅܼÆ

End Function
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

        ÀR«ä¦Û¦b : §g¤l¦p¤ô¡AÀH¤è´N¶ê¡AµL³B¤£¦Û¦b¡C
ªð¦^¦Cªí ¤W¤@¥DÃD