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

[µo°Ý] ¹B°Ê·|ÄvÁɹD¦¸ÀH¾÷¤À²Õ

¦^´_ 1# ymes


    ÁÂÁ«e½úµoªí¦¹¥DÃD»P½d¨Ò
«á¾Ç¾Ç²ß«á«Øij¤è®×¦p¤U,½Ð«e½ú¸Õ¸Õ¬Ý

¹B°Ê·|¤À²Õªí_20230207.zip (22.68 KB)

°õ¦æ«e:


°õ¦æ1:


°õ¦æ2:


Option Explicit
Sub TEST_1()
Dim Arr, Brr, Crr, Y, ¶Ã¼Æ&, ¤H¼Æ&, ¹D¼Æ&, ²Õ¼Æ&, ¶µ¼Æ&, ¶]¹D¼Æ&, i&
Arr = Range([³ø¦Wªí!B2], [³ø¦Wªí!A65536].End(3))
¤H¼Æ = UBound(Arr): ¶]¹D¼Æ = 6: ReDim Brr(¶]¹D¼Æ - 1, 1)
Head:
Set Y = CreateObject("Scripting.Dictionary")
Do While ¶µ¼Æ < ¤H¼Æ
   Randomize: ¶Ã¼Æ = Rnd() * 10000 Mod ¤H¼Æ + 1
   If Y.Exists(¶Ã¼Æ) = Empty Then
      ¶µ¼Æ = ¶µ¼Æ + 1
      Y(¶Ã¼Æ) = ""
      ¹D¼Æ = ¶µ¼Æ Mod ¶]¹D¼Æ
      Y(Arr(¶Ã¼Æ, 1) & "|" & ¹D¼Æ) = ""
      ²Õ¼Æ = IIf(¹D¼Æ, ¶µ¼Æ \ ¶]¹D¼Æ + 1, ¶µ¼Æ \ ¶]¹D¼Æ)
      Y(Arr(¶Ã¼Æ, 1) & "/" & ²Õ¼Æ) = ""
      Crr = Y(²Õ¼Æ & "/²Õ")
      If Not IsArray(Crr) Then
         Crr = Brr
      End If
      ¹D¼Æ = IIf(¹D¼Æ, ¹D¼Æ, ¶]¹D¼Æ)
      Crr(¹D¼Æ - 1, 0) = Arr(¶Ã¼Æ, 1): Crr(¹D¼Æ - 1, 1) = Arr(¶Ã¼Æ, 2)
      Y(²Õ¼Æ & "/²Õ") = Crr
   End If
   If (Y.Count - ²Õ¼Æ) Mod ¶µ¼Æ Then
      ²Õ¼Æ = 0
      ¶µ¼Æ = 0
      GoTo Head
   End If
Loop
With Sheets("¤À²Õªí")
   For i = 1 To ²Õ¼Æ
      .[B3].Item((i - 1) * 9 + 1, 1).Resize(¶]¹D¼Æ, 2) = Y(i & "/²Õ")
   Next
End With
Set Arr = Nothing
Set Brr = Nothing
Set Crr = Nothing
Set Y = Nothing
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-2-8 09:52 ½s¿è

¦^´_ 3# ymes


    ÁÂÁ«e½ú¦^´_
­×§ï¤è®×¦p¤U,½Ð«e½ú¸Õ¸Õ¬Ý

¹B°Ê·|¤À²Õªí_20230208.zip (40.87 KB)

°õ¦æ«e:


°õ¦æµ²ªG:



Option Explicit
Sub TEST_1()
Dim Drr, Brr, Crr, Y, ¶Ã¼Æ&, ¤H¼Æ&, ¹D¼Æ&, ²Õ¼Æ&, °õ¦æ¼Æ&, ¶]¹D¼Æ&, i&
Dim ¶µ¥Ø$, Arr(1 To 1000, 1 To 3), n&, m&
¶µ¥Ø = Split(ActiveSheet.Name, "(")(0)
¶]¹D¼Æ = [A3].End(xlDown).Row - 2
Drr = Range([³ø¦Wªí!C2], [³ø¦Wªí!A65536].End(3))
For i = 1 To UBound(Drr)
   If Drr(i, 3) Like ¶µ¥Ø & "*" Then
      n = n + 1
      Arr(n, 1) = Drr(i, 1): Arr(n, 2) = Drr(i, 2): Arr(n, 3) = Drr(i, 3)
   End If
   If InStr(Cells(i, 1), ¶µ¥Ø) Then Cells(i, 2).Resize(1, 2).ClearContents: m = m + 1
Next
If n = 0 Or m < n Then MsgBox "µLªk°õ¦æ": Exit Sub
[L:N].ClearContents: [L1].Resize(n, 3) = Arr
¤H¼Æ = n: ReDim Brr(¶]¹D¼Æ - 1, 1)
Head:
Set Y = CreateObject("Scripting.Dictionary")
Do While °õ¦æ¼Æ < ¤H¼Æ
   Randomize: ¶Ã¼Æ = Rnd() * 10000 Mod ¤H¼Æ + 1
   If Y.Exists(¶Ã¼Æ) = Empty Then
      °õ¦æ¼Æ = °õ¦æ¼Æ + 1
      Y(¶Ã¼Æ) = ""
      ¹D¼Æ = °õ¦æ¼Æ Mod ¶]¹D¼Æ
      Y(Arr(¶Ã¼Æ, 1) & "|" & ¹D¼Æ) = ""
      ²Õ¼Æ = IIf(¹D¼Æ, °õ¦æ¼Æ \ ¶]¹D¼Æ + 1, °õ¦æ¼Æ \ ¶]¹D¼Æ)
      Y(Arr(¶Ã¼Æ, 1) & "/" & ²Õ¼Æ) = ""
      Crr = Y(²Õ¼Æ & "/²Õ")
      If Not IsArray(Crr) Then
         Crr = Brr
      End If
      ¹D¼Æ = IIf(¹D¼Æ, ¹D¼Æ, ¶]¹D¼Æ)
      Crr(¹D¼Æ - 1, 0) = Arr(¶Ã¼Æ, 1): Crr(¹D¼Æ - 1, 1) = Arr(¶Ã¼Æ, 2)
      Y(²Õ¼Æ & "/²Õ") = Crr
   End If
   If (Y.Count - ²Õ¼Æ) Mod °õ¦æ¼Æ Then
      ²Õ¼Æ = 0
      °õ¦æ¼Æ = 0
      GoTo Head
   End If
Loop
For i = 1 To ²Õ¼Æ
   [B3].Item((i - 1) * (¶]¹D¼Æ + 3) + 1, 1).Resize(¶]¹D¼Æ, 2) = Y(i & "/²Õ")
Next
End Sub
Sub ²M°£()
Dim ¶µ¥Ø$, i&
¶µ¥Ø = Split(ActiveSheet.Name, "(")(0)
For i = 1 To [³ø¦Wªí!A65536].End(3)
   If InStr(Cells(i, 1), ¶µ¥Ø) Then Cells(i, 2).Resize(1, 2).ClearContents
Next
[L:N].ClearContents
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-2-8 16:45 ½s¿è

¦^´_ 5# ymes


    ¤G¦~¯Å¶µ¥Ø¨C¯Z°Ñ¥[¤H¼Æ 4 ¤H !¥i¥H©ñ¼e¦P¤@²Õ¦P¤@¯Z¨â¤H°ÑÁɶÜ?

¤@¦~¯Å½d¨Ò¦A¸Õ¸Õ¬Ý:
20230208_¹B°Ê·|¤À²Õªí_¤@¦~¯Å.zip (54.69 KB)

PS:¦U¦~¯Å«Øij¤À¶}Àx¦s
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-2-9 08:56 ½s¿è

¦^´_ 7# ymes


    ÁÂÁ«e½ú¦A¦^´_
1.«á¾Ç½Æ²ß¤F¤@¤U,°µ¤Fµù¸Ñ,½Ð«e½ú°Ñ¦Ò
2.¦pªG¶]¹D¼Æ,¨C¯Z¤H¼Æ,¦P¯Z¤£¦P¹D³o¨Ç±ø¥ó¾É­PÀH¾÷²Õ¦XµL¸Ñ!! ¸Ó¦p¦ó³]­p¤~¯à§P©wµL¸Ñ?? ¨Ã¸õ¥X "µL¸Ñ" ´£µøµ¡«áµ²§ôµ{§Ç??
¨Ò¦p:¨C¯Z¤H¼Æ4¤H·|¾É­PµL¸Ñ,½Ð«e½ú­Ì«ü¾É,ÁÂÁÂ


Option Explicit
Sub TEST_1()
Dim Drr, Brr, Crr, Y, ¶Ã¼Æ&, ¤H¼Æ&, ¹D¼Æ&, ²Õ¼Æ&, °õ¦æ¼Æ&, ¶]¹D¼Æ&, i&
Dim ¶µ¥Ø$, Arr(1 To 1000, 1 To 3), n&, m&
'¡ô«Å§iÅܼÆ:(Drr, Brr, Crr, Y)¬O³q¥Î«¬ÅܼÆ,¶µ¥Ø ¬O¦r¦êÅܼÆ,Arr¬O¤Gºû°}¦C,
'¨ä¥L¬Oªø¾ã¼ÆÅܼÆ

¶µ¥Ø = Split(ActiveSheet.Name, "(")(0)
'¡ô¥O ¶µ¥Ø ³o¦r¦êÅܼƬO ¥H"("²Å¸¹ ±N¤u§@ªí¦W¤À³Î¦¨¤@ºû°}¦C¨ú0¯Á¤Þ¸¹ªº¦r¦ê
¶]¹D¼Æ = [A3].End(xlDown).Row - 2
'¡ô¥O (¶]¹D¼Æ) ³oªø¾ã¼ÆÅܼƬO ±q[A3]Àx¦s®æ©¹¤U§ä¨ìªÅ®æªº«e¤@®æ¦C¸¹ - 2
Drr = Range([³ø¦Wªí!C2], [³ø¦Wªí!A65536].End(3))
'¡ô¥O Drr³o³q¥Î«¬ÅÜ¼Æ ¬O¤Gºû°}¦C,¥H³ø¦Wªí[C2]¨ìAÄæ³Ì«á¤@­Ó¦³¤º®eÀx¦s®æ­È­Ë¤J
For i = 1 To UBound(Drr)
'¡ô³]¶¶°j°é!±q1¨ì Drr°}¦CÁa¦V³Ì«á¯Á¤Þ¸¹
   If Drr(i, 3) Like ¶µ¥Ø & "*" Then
   '¡ô¦pªGi°j°é¼Æ²Ä3ÄæDrr°}¦C­È¬O (¶µ¥Ø)ÅÜ¼Æ ¶}ÀYªº¦r¦ê??
      n = n + 1
      '¡ô¥On³oªø¾ã¼ÆÅÜ¼Æ ²Ö¥[1
      Arr(n, 1) = Drr(i, 1): Arr(n, 2) = Drr(i, 2): Arr(n, 3) = Drr(i, 3)
      '¡ô¥OnÅܼƦC²Ä1ÄæArr°}¦C­È¬O iÅܼƦC²Ä1ÄæDrr°}¦C­È,~~¨Ì¦¹Ãþ±À
   End If
   If InStr(Cells(i, 1), ¶µ¥Ø) Then Cells(i, 2).Resize(1, 2).ClearContents: m = m + 1
   '¡ô¦pªG¤u§@ªíiÅܼƦC²Ä1ÄæÀx¦s®æ­È ¥]§t¤F(¶µ¥Ø)ÅܼƦr¦ê!´N²M°£¥k°¼¨âÀx¦s®æªº¤º®e,
   '¥Om³oªø¾ã¼ÆÅܼƲ֥[1

Next
If n = 0 Then
'¡ô¦pªGnÅܼƬO 0?
   MsgBox "¨S¦³¦W³æ!µLªk°õ¦æ": Exit Sub
   '¡ô¸õ¥X´£¥Üµ¡~"¨S¦³¦W³æ!µLªk°õ¦æ"~,¤§«áµ²§ôµ{¦¡°õ¦æ
End If
If m < n Then
'¡ô¦pªG mÅܼƤp©ó nÅܼÆ?
   MsgBox "²Õ¼Æªí®æ¤£°÷!µLªk°õ¦æ": Exit Sub
   '¡ô¸õ¥X´£¥Üµ¡~"²Õ¼Æªí®æ¤£°÷!µLªk°õ¦æ"~,¤§«áµ²§ôµ{¦¡°õ¦æ
End If
[L:N].ClearContents: [L1].Resize(n, 3) = Arr
'¡ô¥O[L:N]³o3ÄæÀx¦s®æ¤º®e²M°£ :¥O[L1]ÂX®i¦V¤UnÅܼƦC,¦V¥kÂX®i3Ä檺½d³òÀx¦s®æ¥HArr°}¦C­È­Ë¤J
¤H¼Æ = n: ReDim Brr(¶]¹D¼Æ - 1, 1)
'¡ô¥O ¤H¼Æ³oªø¾ã¼ÆÅܼƬO nÅܼƭÈ: «Å§iBrr°}¦C¤j¤p(Áa¦V±q0¨ì ¶]¹D¼Æ-1,¾î¦V±q0¨ì 1)
Head:
Set Y = CreateObject("Scripting.Dictionary")
'¡ô¥OY¬O ¦r¨å
Do While °õ¦æ¼Æ < ¤H¼Æ
'¡ô³]±ø¥ó°j°é:·í (°õ¦æ¼Æ)ÅÜ¼Æ < (¤H¼Æ)ÅܼÆ!´NÄ~Äò°õ¦æ!
   Randomize: ¶Ã¼Æ = Rnd() * 10000 Mod ¤H¼Æ + 1
   '¡ô¥O ¶Ã¼Æ³oªø¾ã¼ÆÅܼƬO 1 ¨ì (¤H¼Æ)ÅܼƪºRnd()¶Ã¼Æ­È
   If Y.Exists(¶Ã¼Æ) = Empty Then
   '¡ô¦pªG²£¥Íªº(¶Ã¼Æ)ÅܼƭȨS¦³¦bY¦r¨å¸Ì?
      °õ¦æ¼Æ = °õ¦æ¼Æ + 1
     '¡ô¥O(°õ¦æ¼Æ)³oªø¾ã¼ÆÅÜ¼Æ ²Ö¥[1
      Y(¶Ã¼Æ) = ""
      '¡ô¥O(¶Ã¼Æ)ÅܼƷíkey,item¬OªÅ¦r¤¸©ñ¤JY¦r¨å
      ¹D¼Æ = °õ¦æ¼Æ Mod ¶]¹D¼Æ
      '¡ô¥O(¹D¼Æ)³oªø¾ã¼ÆÅܼƬO (°õ¦æ¼Æ) °£ (¶]¹D¼Æ) ªº¾l¼Æ
      Y(Arr(¶Ã¼Æ, 1) & "|" & ¹D¼Æ) = ""
      '¡ô¥O(¶Ã¼Æ)ÅܼƦC²Ä1ÄæArr°}¦C­È ³s±µ "|" ¦A³s±µ (¹D¼Æ)Åܼƪº²Õ¦X¦r¦ê·íkey,item¬OªÅ¦r¤¸©ñ¤JY¦r¨å
      ²Õ¼Æ = IIf(¹D¼Æ, °õ¦æ¼Æ \ ¶]¹D¼Æ + 1, °õ¦æ¼Æ \ ¶]¹D¼Æ)
      '¡ô¥O(²Õ¼Æ)³oªø¾ã¼ÆÅܼƬO ¥HIIf()§PÂ_ªº¦^¶Ç­È,
      '¦pªG(¹D¼Æ)ÅܼƤ£¬O0,´N¥O(²Õ¼Æ)ÅܼƬO (°õ¦æ¼Æ)ÅÜ¼Æ °£ (¶]¹D¼Æ)ªº°Ó¨ú¾ã¼Æ«á + 1
      '¦pªG(¹D¼Æ)ÅܼƬO0,´N¥O(²Õ¼Æ)ÅܼƬO (°õ¦æ¼Æ)ÅÜ¼Æ °£ (¶]¹D¼Æ)ªº°Ó¨ú¾ã¼Æ

      Y(Arr(¶Ã¼Æ, 1) & "/" & ²Õ¼Æ) = ""
      '¡ô¥O(¶Ã¼Æ)¦C²Ä1ÄæArr°}¦C­È ³s±µ "/" ¦A³s±µ (²Õ¼Æ)Åܼƪº²Õ¦X¦r¦ê·íkey,item¬OªÅ¦r¤¸©ñ¤JY¦r¨å
      Crr = Y(²Õ¼Æ & "/²Õ")
      '¡ô¥OCrr³o³q¥Î«¬ÅܼƬO ¥H(²Õ¼Æ)ÅÜ¼Æ ³s±µ "/²Õ"¦¨ªº²Õ¦X¦r¦ê·íkey,¬dY¦r¨å±o¨ìªºitem
      If Not IsArray(Crr) Then
      '¡ô¦pªGCrrÅܼƤ£¬O°}¦C?
         Crr = Brr
         '¡ô¥OCrr ¬O Brr°}¦C
      End If
      ¹D¼Æ = IIf(¹D¼Æ, ¹D¼Æ, ¶]¹D¼Æ)
      '¡ô¥O(¹D¼Æ)ÅܼƬO ¥HIIf()§PÂ_ªº¦^¶Ç­È,
      '¦pªG(¹D¼Æ)ÅܼƤ£¬O0!´N¥O(¹D¼Æ)ÅܼƬO (¹D¼Æ)ÅܼÆ
      '¦pªG(¹D¼Æ)ÅܼƬO0!´N¥O(¹D¼Æ)ÅܼƬO (¶]¹D¼Æ)ÅܼÆ

      Crr(¹D¼Æ - 1, 0) = Arr(¶Ã¼Æ, 1): Crr(¹D¼Æ - 1, 1) = Arr(¶Ã¼Æ, 2)
      '¡ô¥O(¹D¼Æ)ÅܼÆ-1¯Á¤Þ¸¹¦C²Ä0¯Á¤Þ¸¹ÄæCrr°}¦C­È¬O (¶Ã¼Æ)ÅܼƦC²Ä1ÄæArr°}¦C­È
      '¡ô¥O(¹D¼Æ)ÅܼÆ-1¯Á¤Þ¸¹¦C²Ä1¯Á¤Þ¸¹ÄæCrr°}¦C­È¬O (¶Ã¼Æ)ÅܼƦC²Ä2ÄæArr°}¦C­È

      Y(²Õ¼Æ & "/²Õ") = Crr
      '¡ô¥O¥H(²Õ¼Æ)ÅܼƳs±µ "/²Õ" ªº²Õ¦X¦r¦ê·íkey,item¬O Crr°}¦C,©ñ¤JY¦r¨å
      '¦pªG¸Ókey¤w¦s¦bY°}¦C!´N¨ú¥N¨äitem

   End If
   If (Y.Count - ²Õ¼Æ) Mod °õ¦æ¼Æ Then
   '¡ô¦pªG(Y¦r¨åkey¼Æ¶q - (²Õ¼Æ)ÅܼÆ) °£ (°õ¦æ¼Æ)Åܼƪº¾l¼Æ¤£¬O0?
      ²Õ¼Æ = 0
      '¡ô¥O(²Õ¼Æ)ÅܼƬO 0
      °õ¦æ¼Æ = 0
      '¡ô¥O(°õ¦æ¼Æ)ÅܼƬO 0
      GoTo Head
      '¡ô¸õ¨ì Head¼Ð¥Ü³BÄ~Äò°õ¦æ
   End If
Loop
'¡ô¸õ¨ì Do ¦ì¸mÄ~Äò°õ¦æ
For i = 1 To ²Õ¼Æ
'¡ô³]¶¶°j°é!i±q1¨ì (²Õ¼Æ)ÅܼÆ
   [B3].Item((i - 1) * (¶]¹D¼Æ + 3) + 1, 1).Resize(¶]¹D¼Æ, 2) = Y(i & "/²Õ")
   '¡ô[B3]Àx¦s®æÂX®i¦V¤U(¶]¹D¼Æ)ÅܼƦC,¦V¥kÂX®i2Äæ½d³òÀx¦s®æ¥H °}¦C­È ­Ë¤J,
   '°}¦C­È¬O:¥H i°j°é¼Æ ³s±µ "/²Õ"ªº²Õ¦X¦r¦ê·íkey,¬dY¦r¨å±o¨ìªºitem

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

TOP

¦^´_ 9# ymes


    ¦pªG¡K¡K¦pªG¦Aµo°Ý¡A·|¤£·|¤Ó¹L¥÷§r¡K¡K
ÁÂÁ«e½úÄ~Äòµo°Ý,µ¹«á¾ÇÄ~Äò¾Ç²ß

¤@¡B­Y¨C¯Z¥i³ø¦W¤T¤H°Ñ¥[³æ¶µÄvÁÉ¡AÁö¤]·|¶]¥X¥¿½Tµ²ªG¡A¦ý¦ü¥G·|¶]¸û¤[¡A¦ý¤´·|¿é¥X¥¿½Tµ²ªG(¦³®É¥|¡B¤­¬í¡A¦³®É¤G¤Q¬í¥ª¥k)
¾÷²vªº°ÝÃD:¨C¯Z3¤H,¤£¦P²Õ,¤£¦P¹D ªº²Õ¦X¤ñ¸û¤Ö,½×¾Â«Ü¦h¼F®`ªº«e½ú©Î³\¬Ý¨ì¥i¥HÀ°§Ú­Ì¤@§â,´£¤É®Ä²v,ÁÂÁ¦U¦ì«e½ú

¤G¡B¤À²Õ©ïÀY¤k¥Í60M·Q§ï¦¨60M¤k¥Í¡A«o¥X²{¿ù»~¡A°»¿ù®É³o¬q¸ÜÅܦ¨¶À¦â©³¦â¡GCells(i, 2).Resize(1, 2).ClearContents¡AÀ³¦p¦ó­×¥¿©O¡H
½Ð«e½ú¤W¶Ç¦¹²£¥Í¿ù»~ªº½d¨Ò
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-2-10 07:15 ½s¿è

¦^´_ 11# ymes


    «e½ú¦­¦w
101:¤@¦~¤@¯Z
102:¤@¦~¤G¯Z
~
201:¤G¦~¤@¯Z
202:¤G¦~¤G¯Z
~
~
501:¤­¦~¤@¯Z

¤£¬O³o³W«h¶Ü?
²{¦bªº½d¨Ò»P#5¼Óªº½d¨Ò¦³½Ä¬ð
¹ê»Úªº¦~¯Å¯Z¯Å¬O¤°»ò³W«h?
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-2-10 09:49 ½s¿è

¦^´_ 13# ymes


    ÁÂÁ«e½úÄ~Äò¤@°_¾Ç²ß°µ¬ã°Q¦^ÂÐ
³]Âù±ø¥óÀH¾÷¦W³æ¤£µ¥©ó¤½¥­,ªí®æ³°Äò¼W´î­×§ï¤£·|§xÂZ,³£¥u¯à¿ï¾Ü±µ¨ü
­×§ï»Ý¨D¦p¤U,½Ð«e½úÄ~Äò´ú¸Õ»Ý¨D,¦Û¤v­×§ï¬Ý¬Ý,ÁÂÁÂ

¹B°Ê·|¤À²Õªí20230210.zip (59.71 KB)

°õ¦æ«e:         ps:²M°£«áªºªí®æ­Y¬O8¶]¹D¼Æ,´Nºâ8¹D¦W³æ:­Y§R°£³Ñ6¶]¨ì,§Yºâ6¶]¹D¦W³æ,ÀH·N¼W´î


°õ¦æµ²ªG:
  1. Option Explicit
  2. Dim ²Õªí®æ As Range, R&, C%
  3. Sub ¶}©l¤À²Õ()
  4. Dim Drr, Brr, Crr, Y, ¶Ã¼Æ&, ¤H¼Æ&, ¹D¼Æ&, ²Õ¼Æ&, °õ¦æ¼Æ&, ¶]¹D¼Æ&, i&
  5. Dim ¶µ¥Ø$, Arr(1 To 1000, 1 To 3), n&, m&, ²Õ§O, xR As Range
  6. ¶µ¥Ø = Split(ActiveSheet.Name, "(")(0)
  7. ¶]¹D¼Æ = [A2].End(xlDown).Row - 2
  8. Drr = Range([³ø¦Wªí!C2], [³ø¦Wªí!A65536].End(3))
  9. For i = 1 To UBound(Drr)
  10.    If Drr(i, 3) Like ¶µ¥Ø & "*" Then
  11.       n = n + 1
  12.       Arr(n, 1) = Drr(i, 1): Arr(n, 2) = Drr(i, 2): Arr(n, 3) = Drr(i, 3)
  13.    End If
  14. Next
  15. If n = 0 Then
  16.    MsgBox "¨S¦³¦W³æ!µLªk°õ¦æ": Exit Sub
  17. End If
  18. If ¶]¹D¼Æ < 1 Then
  19.    MsgBox "¶]¹D¼Æ¤£²Å¦X³W«h!µLªk°õ¦æ": Exit Sub
  20. End If
  21. Call ²M°£: [L1].Resize(n, 3) = Arr
  22. ¤H¼Æ = n: ReDim Brr(¶]¹D¼Æ - 1, 1)
  23. Head:
  24. Set Y = CreateObject("Scripting.Dictionary")
  25. Do While °õ¦æ¼Æ < ¤H¼Æ
  26.    Randomize: ¶Ã¼Æ = Rnd() * 10000 Mod ¤H¼Æ + 1
  27.    If Y.Exists(¶Ã¼Æ) = Empty Then
  28.       °õ¦æ¼Æ = °õ¦æ¼Æ + 1
  29.       Y(¶Ã¼Æ) = ""
  30.       ¹D¼Æ = °õ¦æ¼Æ Mod ¶]¹D¼Æ
  31.       Y(Arr(¶Ã¼Æ, 1) & "|" & ¹D¼Æ) = ""
  32.       ²Õ¼Æ = IIf(¹D¼Æ, °õ¦æ¼Æ \ ¶]¹D¼Æ + 1, °õ¦æ¼Æ \ ¶]¹D¼Æ)
  33.       Y(Arr(¶Ã¼Æ, 1) & "/" & ²Õ¼Æ) = ""
  34.       Crr = Y(²Õ¼Æ & "/²Õ")
  35.       If Not IsArray(Crr) Then Crr = Brr
  36.       ¹D¼Æ = IIf(¹D¼Æ, ¹D¼Æ, ¶]¹D¼Æ)
  37.       Crr(¹D¼Æ - 1, 0) = Arr(¶Ã¼Æ, 1): Crr(¹D¼Æ - 1, 1) = Arr(¶Ã¼Æ, 2)
  38.       Y(²Õ¼Æ & "/²Õ") = Crr
  39.    End If
  40.    If (Y.Count - ²Õ¼Æ) Mod °õ¦æ¼Æ Then ²Õ¼Æ = 0: °õ¦æ¼Æ = 0: GoTo Head
  41. Loop
  42. For i = 1 To ²Õ¼Æ - 1: ²Õªí®æ.Copy Cells(i * (R + 1) + 1, 1): Next
  43. For i = 1 To ²Õ¼Æ
  44.    ²Õ§O = "(²Ä" & Application.Text(i, "[DBNum1]0") & "²Õ)"
  45.    Set xR = [B3].Item((i - 1) * (¶]¹D¼Æ + 3) + 1, 1)
  46.    xR.Resize(¶]¹D¼Æ, 2) = Y(i & "/²Õ")
  47.    Set xR = xR.Item(-1, 0)
  48.    xR.Value = Split(xR.Value, "(")(0) & ²Õ§O
  49. Next
  50. End Sub
  51. Sub ²M°£()
  52. Dim uR&
  53. R = [A2].End(xlDown).Row
  54. C = [A2].End(xlToRight).Column
  55. uR = ActiveSheet.UsedRange.Rows.Count
  56. [L:N].ClearContents
  57. [A2].End(xlDown).Item(2, 1).Resize(uR - R, C).Clear
  58. [B3].Resize(R - 2, 2).ClearContents
  59. Set ²Õªí®æ = Range([A1], Cells(R, C))
  60. End Sub
½Æ»s¥N½X
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-2-10 14:42 ½s¿è

¦^´_ 15# ymes


    ÁÂÁ«e½ú,«á¾ÇÀrÆj§Þ½a¤F,½Ð«e½ú­Ì«ü¾É
¤£ª¾«e½ú§ï°Ê¦h¤Öµ{¦¡½X?

½Ð±N¤U¦C¬õ¦r·s¼W©Î¨ú¥N, ©Î ¤W¶Ç«e½ú³Ì·s½d¨Ò

Option Explicit
Dim ²Õªí®æ As Range, R&, C%
Sub ¶}©l¤À²Õ()
Dim Drr, Brr, Crr, Y, ¶Ã¼Æ&, ¤H¼Æ&, ¹D¼Æ&, ²Õ¼Æ&, °õ¦æ¼Æ&, ¶]¹D¼Æ&, i&
Dim ¶µ¥Ø$, Arr(1 To 1000, 1 To 3), n&, ²Õ§O, xR As Range
¶µ¥Ø = Split(ActiveSheet.Name, "(")(0)
¶]¹D¼Æ = [A2].End(xlDown).Row - 2
Drr = Range([³ø¦Wªí!C2], [³ø¦Wªí!A65536].End(3))
For i = 1 To UBound(Drr)
   If Drr(i, 3) Like ¶µ¥Ø & "*" Then
      n = n + 1
      Arr(n, 1) = Drr(i, 1): Arr(n, 2) = Drr(i, 2): Arr(n, 3) = Drr(i, 3)
   End If
Next
If n = 0 Then
   MsgBox "¨S¦³¦W³æ!µLªk°õ¦æ": Exit Sub
End If
If ¶]¹D¼Æ < 1 Then
   MsgBox "¶]¹D¼Æ¤£²Å¦X³W«h!µLªk°õ¦æ": Exit Sub
End If
Call ²M°£: [L1].Resize(n, 3) = Arr
¤H¼Æ = n: ReDim Brr(¶]¹D¼Æ - 1, 1)
Head:
Set Y = CreateObject("Scripting.Dictionary")
Do While °õ¦æ¼Æ < ¤H¼Æ
   Randomize: ¶Ã¼Æ = Rnd() * 10000 Mod ¤H¼Æ + 1
   If Y.Exists(¶Ã¼Æ) = Empty Then
      °õ¦æ¼Æ = °õ¦æ¼Æ + 1
      Y(¶Ã¼Æ) = ""
      ¹D¼Æ = °õ¦æ¼Æ Mod ¶]¹D¼Æ
      Y(Arr(¶Ã¼Æ, 1) & "|" & ¹D¼Æ) = ""
      ²Õ¼Æ = IIf(¹D¼Æ, °õ¦æ¼Æ \ ¶]¹D¼Æ + 1, °õ¦æ¼Æ \ ¶]¹D¼Æ)
      Y(Arr(¶Ã¼Æ, 1) & "/" & ²Õ¼Æ) = ""
      Crr = Y(²Õ¼Æ & "/²Õ")
      If Not IsArray(Crr) Then Crr = Brr
      ¹D¼Æ = IIf(¹D¼Æ, ¹D¼Æ, ¶]¹D¼Æ)
      Crr(¹D¼Æ - 1, 0) = Arr(¶Ã¼Æ, 1): Crr(¹D¼Æ - 1, 1) = Arr(¶Ã¼Æ, 2)
      Y(²Õ¼Æ & "/²Õ") = Crr
   End If
   If (Y.Count - ²Õ¼Æ) Mod °õ¦æ¼Æ Then ²Õ¼Æ = 0: °õ¦æ¼Æ = 0: GoTo Head
Loop
'For i = 1 To ²Õ¼Æ - 1: ²Õªí®æ.Copy Cells(i * (R + 1) + 1, 1): Next '³o¦æÂI±¼,·s¼W¤U¦C¬õ¦r
Dim S$, T&
For i = 1 To ²Õ¼Æ - 1
   ²Õªí®æ.Copy Cells(i * (R + 1) + 1, 1)
   T = 3 + ((R + 1) * i)
   S = "=IF(F" & T & "<>0,RANK(F" & T & ",$F$" & T & ":$F$" & T + ¶]¹D¼Æ - 1 & ",1),"""")"
   Cells(i * (R + 1) + 1, 1).Item(3, 7).Resize(¶]¹D¼Æ, 1) = S
Next

For i = 1 To ²Õ¼Æ
   ²Õ§O = "(²Ä" & Application.Text(i, "[DBNum1]0") & "²Õ)"
   Set xR = [B3].Item((i - 1) * (¶]¹D¼Æ + 3) + 1, 1)
   xR.Resize(¶]¹D¼Æ, 2) = Y(i & "/²Õ")
   Set xR = xR.Item(-1, 0)
   xR.Value = Split(xR.Value, "(")(0) & ²Õ§O
Next
End Sub
Sub ²M°£()
Dim uR&
R = [A2].End(xlDown).Row
C = [A2].End(xlToRight).Column
uR = ActiveSheet.UsedRange.Rows.Count
[L:N].ClearContents
[A2].End(xlDown).Item(2, 1).Resize(uR - R, C).Clear
[B3].Resize(R - 2, 2).ClearContents
'·s¼W¤U¦C¬õ¦r
[F3].Resize(R - 2, 1).ClearContents
[G3].Resize(R - 2, 1) = "=IF(F3<>0,RANK(F3,$F$3:$F$" & R & ",1),"""")"

Set ²Õªí®æ = Range([A1], Cells(R, C))
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 17# ­ã´£³¡ªL


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

TOP

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-2-11 08:38 ½s¿è

¦^´_ 21# ymes


    ÁÂÁ«e½úÄ~Äò¤@°_¾Ç²ß

1.«á¾Ç·Qªk¤£¤@¼Ë:¤½¦¡¬OVBA´¼¼zªººëµØ¿@ÁY,¬O«á¾Ç¾Ç²ßEXCELªº¨½µ{¸O,«Øij²ö©¿µø¤½¦¡
2.«e½ú·P¨ü¨ìVBAªº¦n³B,¥H«á±`¤W½×¾Â¤@°_¾Ç²ß,Åý§ó¦h¨Æ¥i¥H¨Æ¥b¥\­¿
3.«e½ú³°Äò¼W¥[¶µ¥Ø»P³W«h,·Q¥²³Ì²×ª©¥»¥¼©w®×,¥H©¹¬°¦P¨Æ³]­p½ÆÂøÂIªºªí®æ³£­n¶}·|°Q½×,
°Q½×¦U¤è´£¥Xªº·N¨£,°µ¥X³Ì«áªº©w®×
4.«á¾Çªº¸gÅç¬Oµ{¦¡¹çÄ@¼g¤j¤@ÂI¼s¤@ÂI,«áÄò°µ¤p­×§ï,¦pªG±ø¥ó¹³«e½úªº±¡¹Ò¤@ª½Åܧó,µ{¦¡±`±`­n¤j§ï©Î¥´±¼­«¼g,
±`±`§ï±ø¥ó¹ï¾Ç²ß¤¤ªº«á¾Ç¬O«Ü¦nªº¾Ç²ß¾÷·|,±`±`ÅÜ«äºû,¿i­@¤ß,ÁÂÁ«e½ú
5.¦pªG«e½úªº»Ý¨D¬O«Ü«æ­¢ªº!«Øij«e½ú¥ý§ä¥i³Ì²×©w®×ªº¹Î¶¤¤@°_°Q½×¥X³Ì²×ª©¥»,½×¾Â¸Ì«Ü¦h¼F®`ªº«e½ú¥i¥H«ü¾É
6.¦pªG»Ý¨D¤£«æ!³°Äò¦A´£¥X¤£¦P»Ý¨D°Q½×¾Ç²ß¤]¬O«Ü¦nªº¤è¦¡
7.«á¾Ç©ß¿j¤Þ¥É,,¥i¥H±o¨ì«e½ú­Ìªº«ü¾É,³Ì¤jªº·N¸q¬O§Æ±æ§ó¦h¤H¤@°_¾Ç²ß

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

TOP

        ÀR«ä¦Û¦b : ¡i¬°µ½Ävª§¡j¤H¥Í­n¬°µ½Ävª§¡A¤À¬í¥²ª§¡C
ªð¦^¦Cªí ¤W¤@¥DÃD