- ©«¤l
- 1447
- ¥DÃD
- 40
- ºëµØ
- 0
- ¿n¤À
- 1471
- ÂI¦W
- 0
- §@·~¨t²Î
- Windows 7
- ³nÅ骩¥»
- Excel 2010 & 2016
- ¾\ŪÅv
- 50
- ©Ê§O
- ¨k
- ¨Ó¦Û
- ¥xÆW
- µù¥U®É¶¡
- 2020-7-15
- ³Ì«áµn¿ý
- 2025-2-11
|
¥»©«³Ì«á¥Ñ Andy2483 ©ó 2022-10-27 14:44 ½s¿è
¦^´_ 9# ã´£³¡ªL
'ÁÂÁ«e½ú
'³o©«²ß±o¦h¼Ëª¾ÃÑ
'1.Range([¸ê®Æ!c1], [¸ê®Æ!a1].Cells(Rows.Count, 1).End(xlUp))
' ¬Ý¦ü²³æªºÀx¦s®æ½d³ò!¾Ç¨ì¤F [¸ê®Æ!c1] ·|ÅýRange()«ü¦V ¸ê®Æªí
' ¥H«e»~¥H¬° ¨S¦³¤u§@ªí«ü¦VªºRange() ¤@©w¬O¦bActiveSheet
' §_«h¤@©wn«ü¦VþÓªí Sheets("¸ê®Æ").Range()
'2.«e½ú«Ü¦³¤ß³£·|¥Î¤£¦Pªº»yªk±Òµo«á¾ÇÌ!¤£¬O¾÷±ñ¦¡ªº¦^µª!ÁÂÁÂ!
'3.Format(T(3), "0000") ¾Ç²ß¨ì¦p¦ó¼Æ¦r¸É¨¬«e¤èªº0 ¦¨¬°·Qnªº¼Æ¦r½X¼Æ
'4.¥Î¦r¨å»P°}¦C ¾Q³¯¼ÐÃD¦C»P¼ÐÃDÄæ ¦n¹³¤w¸g¬ÝÀ´! ¦ý¤S¤£·|¥Î!¦A¶Ô½m¬Ý¬Ý!
'5.¾Ç¨ì Äæ±Æ§Ç
'6.¾Ç¨ì ¥h°£ "|"²Å¸¹(§t)¥kÃ䪺¦r¤¸ Replace "|*", "", Lookat:=xlPart
'7.¾Ç¨ì ¯d¤U[A1]Àx¦s®æ!¨ä¾lÀx¦s®æ§R°£
'8.±×½uÀHÀx¦s®æÁY©ñ
¤@¶}©l¶K¤J:
Äæ±Æ§Ç:
¦C±Æ§Ç:
¼ÐÃD¦C¯dì®Æ»PÅã¥Ü®æ½u:
±×½uÀHÀx¦s®æÁY©ñ:
¥H¤U¤ß±oµù¸Ñ½Ð«e½ú¦A«ü±Ð!ÁÂÁ«e½ú
Sub TEST_A1()
Dim Arr, Brr, xD, T$(3), i&, j%, R&, C%, X&, Y%
'¡ô«Å§iÅܼÆ,§å¦¸«Å§iT¬O¦r¦êÅÜ¼Æ T(0)~T(3)
Call ²M°£
'¡ô°õ¦æ°Æµ{¦¡ ²M°£()
Set xD = CreateObject("Scripting.Dictionary")
'¡ô¥O xD¬O¦r¨å
Arr = Range([¸ê®Æ!c1], [¸ê®Æ!a1].Cells(Rows.Count, 1).End(xlUp))
'¡ô¥O Arr¬O°}¦C,ˤJ ¸ê®Æªí¸ÌC1¨ìAÄæ³Ì«á¤@Ó¦³¤º®eÀx¦s®æ
'³o¨âÓÀx¦s®æ¶¡ÂX®i¨ì³Ì¤p¤è¥¿°Ï°ìÀx¦s®æªºÈ
ReDim Brr(1 To UBound(Arr), 1 To 200)
'¡ô«Å§i Brr°}¦Cªº½d³ò! Áa¦V¬O1 ¨ì Arr°}¦Cªº¦C¼Æ
'¾î¦V¬O1 ¨ì 200 Äæ¼Æ
For i = 2 To UBound(Arr)
'¡ô³]¥~¶¶°j°é ±q2 ¨ì Arr°}¦C³Ì«á¦C¼Æ
For j = 1 To 3
'¡ô³]¤º¶¶°j°é ±q1 ¨ì3
T(j) = Arr(i, j)
'¡ô¥O°j°é¤¤ T¦r¦êÅܼƸˤJArr°}¦C¹ïÀ³È
If T(j) = "" Then
'¡ô¦pªG ¦¹¤º°j°é¤¤ T¦r¦êÅÜ¼Æ ¸Ë¤J¤FªÅ®æ
GoTo 101
'¡ô±ø¥ó¦¨¥ß!´N¸õ¨ì 101 Ä~Äò°õ¦æ
End If
Next j
T(0) = T(2) & "|" & Format(T(3), "0000")
'¡ô¥O²Ä1ÓT¦r¦êÅܼƬO ²Ä3ÓT¦r¦êÅÜ¼Æ & "|" & ²Ä4ÓT¦r¦ê(4½X¼Æ¦r)
X = xD(T(1))
'¡ô¥OX¼Æ¦rÅܼƬO xD¦r¨å¸Ì¥H ²Ä2ÓT¦r¦ê Ȭ°keyªºitem
'¤@¶}©l¬O¬d¤£¨ì item!¦ý¬O¦r¨å¸Ì¤w¸g¦¬¯Ç¤F ²Ä2ÓT¦r¦ê Ȭ°key
'¦]¬°X¼Æ¦rÅܼÆ!¬d¤£¨ì´N¬Oªì©lÈ0
Y = xD(T(0))
'¡ô¥OY¼Æ¦rÅܼƬO xD¦r¨å¸Ì¥H ²Ä1ÓT¦r¦ê Ȭ°keyªºitem
'¤@¶}©l¤]¬O¬d¤£¨ì item!¦ý¬O¦r¨å¸Ì¤w¸g¦¬¯Ç¤F ²Ä1ÓT¦r¦ê Ȭ°key
'¦]¬°Y¼Æ¦rÅܼÆ!¬d¤£¨ì´N¬Oªì©lÈ0
If X = 0 Then
'¡ô¦pªGX¼Æ¦rÅܼƬOªì©lÈ0
R = R + 1
'¡ô±ø¥ó¦¨¥ß!R¼Æ¦rÅܼƴN²Ö¥[ 1
X = R + 1
'¡ô±ø¥ó¦¨¥ß!X¼Æ¦rÅܼƤS¥HR¼Æ¦rÅܼƦA +1
'¦]¬°¼ÐÃDÄæ¬O±q©¹¤U²Ä2Ó¶}©l
xD(T(1)) = X
'¡ô¥O xD¦r¨å¤¤ ²Ä2ÓT¦r¦êÅܼÆ(½s¸¹) ¬°keyªºitem = X¼Æ¦rÅܼÆ
'©Ò¥H¶}©l¸Ë¤Jªºitem¬O ¼Æ¦r2
Brr(X, 1) = T(1)
'¡ô¤@¶}©l¬O¥OBrr°}¦C²Ä2¦C²Ä1Äæ¬O ²Ä2ÓT¦r¦êÅܼÆ(½s¸¹)
'¡ô³o¬O¼ÐÃDÄæ
End If
If Y = 0 Then
'¡ô¦pªGY¼Æ¦rÅܼƬOªì©lÈ0
C = C + 1
'¡ô±ø¥ó¦¨¥ß!C¼Æ¦rÅܼƴN²Ö¥[ 1
Y = C + 1
'¡ô±ø¥ó¦¨¥ß!Y¼Æ¦rÅܼƤS¥HC¼Æ¦rÅܼƦA +1
'¦]¬°¼ÐÃD¦C¬O±q©¹¥k²Ä2Ó¶}©l
xD(T(0)) = Y
'¡ô¥O xD¦r¨å¤¤ (ì®Æ)& "|" &(§å¸¹) ¬°keyªºitem = Y¼Æ¦rÅܼÆ
Brr(1, Y) = T(0)
'¡ô¤@¶}©l¬O¥OBrr°}¦C²Ä1¦C²Ä2Äæ¬O ²Ä1ÓT¦r¦êÅÜ¼Æ (ì®Æ)& "|" &(§å¸¹)
'¡ô³o¬O¼ÐÃD¦C
End If
Brr(X, Y) = T(3)
'¡ô¼ÐÃD¦CÄæ©Ò¹ïÀ³ªº §å¸¹©ñ¤J Brr°}¦C¤¤
101: Next i
Brr(1, 1) = "¡@¡@¡@ì®Æ¡@½s¸¹"
'¡ô¥OBrr°}¦C²Ä1¦C²Ä1ÄæÀx¦s®æªº¦r¦ê
With [§e²{ªí!A1].Resize(R + 1, C + 1)
'¡ôR¬O¤£¥]§t¼ÐÃD¦C!©Ò¥Hn +1 ,C¬O¤£¥]§t¼ÐÃDÄæ!©Ò¥Hn +1
.Value = Brr
'¡ô±NBrr°}¦C±q §e²{ªí[A1]¶K¤JÈ
.Columns(2).Resize(, C).Sort Key1:=.Cells(1, 2), Order1:=xlAscending, Header:=xlNo, Orientation:=xlLeftToRight
'¡ôÄæ¥H¼ÐÃD¦C±Æ§Ç
.Rows(2).Resize(R).Sort Key1:=.Cells(2, 1), Order1:=xlAscending, Header:=xlNo, Orientation:=xlTopToBottom
'¡ô¦C¥H¼ÐÃDÄæ±Æ§Ç
.Rows(1).Replace "|*", "", Lookat:=xlPart
'¡ô§â¼ÐÃD¦C¥h°£ "|"²Å¸¹(§t)¥kÃ䪺¦r¤¸!¼ÐÃD¦C³Ñ¤U (ì®Æ)
.Borders.LineStyle = 1
'¡ôÅýÀx¦s®æ®æ½uÅã¥Ü ²Ó¹ê½u
End With
End Sub
Sub ²M°£()
With Sheets("§e²{ªí").UsedRange
.Offset(1, 0).EntireRow.Delete
.Offset(, 1).EntireColumn.Delete
'¯d¤U[A1]Àx¦s®æ!¨ä¾lÀx¦s®æ§R°£
End With
End Sub |
|