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

Àx¦s®æ¤º¹J¹y¸¹¦p¦ó¤ñ¹ï«á±a¥X¸ê®Æ¤Î§@¼Ï¯Ã¤ÀªR

¥»©«³Ì«á¥Ñ Andy2483 ©ó 2023-11-9 09:20 ½s¿è

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


    ÁÂÁ½׾Â,ÁÂÁ«e½ú«ü¾É
«á¾ÇÂǦ¹©«¾Ç²ß«e½úªº¤è®×,°õ¦æµ²ªG»P¤ß±oµù¸Ñ¦p¤U,½Ð«e½ú¦A«ü¾É

°õ¦æ«e:


°õ¦æµ²ªG:



Sub ­«¾ã()
Dim Arr, Brr, A, B, xD, i&, N&, j%, T$
'¡ô«Å§iÅܼÆ:(Arr,Brr,A,B,xD)¬O³q¥Î«¬ÅܼÆ,(i,N)¬Oªø¾ã¼Æ,j¬Oµu¾ã¼Æ,T¬O¦r¦êÅܼÆ
[I2:L6000].Clear
'¡ô¥O[I2:L6000]³o½d³òÀx¦s®æ²M°£
Set xD = CreateObject("Scripting.Dictionary")
'¡ô¥OxD³o³q¥Î«¬ÅܼƬO ¦r¨å
Arr = Range([G2], [F65536].End(xlUp))
'¡ô¥OArr³o³q¥Î«¬ÅܼƬO¤Gºû°}¦C,¥H[G2]¨ìFÄæ³Ì«á¦³¤º®eÀx¦s®æ­È±a¤J°}¦C¤¤
For i = 1 To UBound(Arr)
'¡ô³]¶¶°j°é!¥Oi±q1 ¨ìArr°}¦CÁa¦V³Ì¤j¯Á¤Þ¦C¸¹
    xD(Arr(i, 1) & "") = Arr(i, 2)
    '¡ô¥Oi°j°é¦C1ÄæArr°}¦C­È(¦r¦ê)·íkey,
    'item¬O i°j°é¦C1ÄæArr°}¦C­È,¯Ç¤JxD¦r¨å¤¤

Next i

Arr = Range([C2], [A65536].End(xlUp))
'¡ô¥OArr°}¦C´«¸Ë²± [C2]¨ìAÄæ³Ì«á¦³¤º®eÀx¦s®æ ­È
ReDim Brr(1 To 20000, 1 To 4)
'¡ô«Å§iBrrªÅ°}¦Cªº½d³ò,Áa¦V¯Á¤Þ¸¹1~20000,¾î¦V1~4
For i = 1 To UBound(Arr)
'¡ô³]¶¶°j°é!¥Oi±q1 ¨ìArr°}¦CÁa¦V³Ì¤j¯Á¤Þ¦C¸¹
    A = Split(Replace(Arr(i, 2), ChrW(160), ""), "¡B")
   '¡ô¥OA³o³q¥Î«¬ÅܼƬO ¤@ºû°}¦C:
    'i°j°é¦C2ÄæArr°}¦C­È¸g¦Ü´«¦r¤¸(ªÅ®æ>>ªÅ¦r¤¸)¦¨ªº·s¦r¦ê,¦A¥H"¡B"¤À³Î¦¨ªº°}¦C

    https://learn.microsoft.com/zh-t ... haracter-set-128255
    B = Split(Replace(Arr(i, 3), ChrW(160), ""), "¡B")
    '¡ô¥OB³o³q¥Î«¬ÅܼƬO ¤@ºû°}¦C:
    'i°j°é¦C3ÄæArr°}¦C­È¸g¦Ü´«¦r¤¸(ªÅ®æ>>ªÅ¦r¤¸)¦¨ªº·s¦r¦ê,¦A¥H"¡B"¤À³Î¦¨ªº°}¦C

    If UBound(A) <> UBound(B) Then MsgBox "²Ä " & i + 1 & " ¦æ¼Æ¾Ú¦³°ÝÃD!! ": Exit Sub
    '¡ô¦pªGA°}¦C³Ì¤j¯Á¤Þ¸¹»P ¦pªGB°}¦C³Ì¤j¯Á¤Þ¸¹¤£¦P?
    'true´N¸õ¥X´£¥Üµ¡~~~:µ²§ôµ{¦¡°õ¦æ

    For j = 0 To UBound(A)
    '¡ô³]¶¶°j°é!¥Oj±q1 ¨ìA°}¦C³Ì¤j¯Á¤Þ¸¹
        N = N + 1:  T = T & "¡B" & xD(B(j) & "")
        '¡ô¥ON³oªø¾ã¼ÆÅܼƲ֥[1
        '¡ô¥OT³o¦r¦êÅܼƬO ¦Û¨­³s±µ "¡B" ¦A³s±µ(¥Hj°j°éB°}¦C­È¦r¦ê¬dxD¦r¨å¦^¶Ç­È)

        Brr(N, 1) = Arr(i, 1):   Brr(N, 2) = A(j)
        '¡ô¥ONÅܼƦC1ÄæBrr°}¦C­È¬O i°j°é¦C1ÄæArr°}¦C­È
        '¡ô¥ONÅܼƦC2ÄæBrr°}¦C­È¬O j°j°éA°}¦C­È

        Brr(N, 3) = B(j):   Brr(N, 4) = xD(B(j) & "")
        '¡ô¥ONÅܼƦC3ÄæBrr°}¦C­È¬O j°j°éB°}¦C­È
        '¡ô¥ONÅܼƦC4ÄæBrr°}¦C­È¬O ¥Hj°j°éB°}¦C­È¦r¦ê¬dxD¦r¨å¦^¶Ç­È

    Next j
    Arr(i, 1) = Mid(T, 2): T = ""
    '¡ô¥Oi°j°é¦C1ÄæArr°}¦C­È¬O TÅܼƥh°£²Ä1­Ó¦r¤¸ªº·s¦r¦ê
    '¥OTÅܼƦr¦ê²MªÅ
Next i

With [I2].Resize(N, 4)
'¡ô¥H¤U¬OÃö©ó[I2]ÂX®i¦V¤UNÅܼƦC,ÂX®i¦V¥k4ÄæÀx¦s®æ½d³òªºµ{§Ç
     .Columns(2).NumberFormatLocal = "#,##0 ;-#,##0 "
     '¡ô¥O³o½d³òÀx¦s®æ²Ä2Äæ®æ¦¡­nÅã¥Ü¤d¤À¦ì²Å¸¹(,)
     .Columns(3).HorizontalAlignment = xlCenter
     '¡ô¥O³o½d³òÀx¦s®æ²Ä3ÄæÀx¦s®æ­È ¤ô¥­¹ï»ô¤è¦¡¸m¤¤
     .Columns(4).NumberFormatLocal = "@"
     '¡ô¥O³o½d³òÀx¦s®æ²Ä4Äæ®æ¦¡¬O¤å¦r
     .Borders.LineStyle = 1:  .Font.Size = 10
     '¡ô¥O³o½d³òÀx¦s®æ®Ø½u¬O²Ó¹ê½u
     '¡ô¥O³o½d³òÀx¦s®æ¤å¦r¤j¤p¬°10

     .Value = Brr
     '¡ô¥O³o½d³òÀx¦s®æ­È¥HBrr°}¦C­È±a¤J
End With

[D2].Resize(UBound(Arr)) = Arr '¶ñ¤JDÄæ¹ïÀ³­È
'¡ô¥O[D2]ÂX®i¦V¤U(Arr°}¦C³Ì¤j¯Á¤Þ¸¹¼Æ¦C)Àx¦s®æ½d³ò¥HArr°}¦C­È±a¤J
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

        ÀR«ä¦Û¦b : ¡i°±º¢¤£«e¡A²×µL©Ò±o¡j¤H³£°g©ó´M§ä©_ÂÝ¡A¦]¦Ó°±º¢¤£«e¡FÁa¨Ï®É¶¡¦A¦h¡B¸ô¦Aªø¡A¤]¤FµL¥Î³B¡A²×µL©Ò±o¡C
ªð¦^¦Cªí ¤W¤@¥DÃD