- ©«¤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
|
For Each A In Z.KEYS
'¡ô³]³v¶µ°j°é!¥OAÅܼƬOZ¦r¨å¤¤ªºkey
If Right(A, 3) <> "/RN" Then GoTo A01 Else Q = Split(Z(A), ","): xR = Z(Split(A, "/RN")(0) & "/GD")
'¡ô¦pªGAÅܼƥk3¦r¤£¬O"/RN"¦r¦ê!´N¥Oµ{§Ç¸õ¨ì¼Ð¥ÜA01¦ì¸mÄ~Äò°õ¦æ,
'§_«h´N¥OQÅܼƬO¥H³r¸¹¤À³Î¦r¦ê(¥HAÅܼƬdZ¦r¨å¦^¶Çªº¦r¦ê)©Ò§Î¦¨ªº¤@ºû°}¦C,¥OxRÀx¦s®æȬO¬dZ¦r¨å¦^¶ÇÈ
With xR.Resize(, 14): .Merge: .Font.Size = 9: .Font.Bold = True: .Rows.RowHeight = 52 * Sh: End With
'¡ô¥OCONTAINER NO¼ÐÃD®æ¦X¨Ö,¤å¦r¤j¤p9,³]¤å¦r²ÊÅé,¦C°ª52Ó³æ¦ì
For i = 1 To UBound(Q)
'¡ô³]¶¶°j°é!¥Oi±q1 ¨ìQ°}¦C³Ì¤j¯Á¤Þ¸¹
Set xR = xR(2): xR.Resize(1, 14).Interior.ColorIndex = 15: xR.Resize(1, 14).Font.Bold = True: xR.Rows.RowHeight = 27 * Sh
'¡ô¥OxRÀx¦s®æÅܬ°¤U¤@®æ,¥O±qxRÀx¦s®æ¥kÂX®i14®æ½d³òÀx¦s®æ©³¦â¬°¦Ç¦â/¤å¦r¬°²ÊÅé,¦C°ª27Ó³æ¦ì
With xR.Resize(1, 4): .Merge: .Font.Size = 12: .Value = "'" & Q(i): End With
'¡ô¥O±qxRÀx¦s®æ¥kÂX®i14®æ½d³òÀx¦s®æ¦X¨Ã/¤å¦r¤j¤p12/¥O¤å¦r¤º®e¬°i°j°éQ°}¦CÈ(«e±¥[³æ¤Þ¸¹¬O¥O±j¨î¨ä¬°¤å¦r)
xR(1, 6).Resize(, 2).Merge: xR(1, 10).Resize(, 5).Merge
'¡ô¥O¬q¸¨Àx¦s®æ¦X¨Ö
P = Split(Z(Q(i) & "|"), ","): R = Val(P(0))
'¡ô¥OPÅܼƬO¥H³r¸¹¤À³Î¦r¨å¸Ì°O¿ýªºItemªí¦C¸¹¦ê,¥ORÅܼƬORackªíªº¦C¸¹
xR(1, 8) = Val(Rackr(R, 6)): xR(1, 9) = Val(Rackr(R, 7)): xR(1, 10) = Rackr(R, 8) & " x " & Rackr(R, 9) & " x " & Rackr(R, 10)
'¡ô¥O¦ÛxRÀx¦s®æ¥k8®æ(H)Àx¦s®æȬORÅܼƦC6ÄæRackr°}¦CÈ,¥O¦ÛxRÀx¦s®æ¥k9®æ(I)Àx¦s®æȬORÅܼƦC9ÄæRackr°}¦CÈ,
'¥O¦ÛxRÀx¦s®æ¥k10®æ(H)Àx¦s®æȬORÅܼƦC8/9/10ÄæRackr°}¦CÈ¥H"x"²Å¸¹³s±µ©Ò²Õ¦¨ªº·s¦r¦ê
V8 = V8 + xR(1, 8): V9 = V9 + xR(1, 9): V10 = V10 + (Val(Rackr(R, 8)) * Val(Rackr(R, 9)) * Val(Rackr(R, 10)) / 10 ^ 9): Set xRs = xR(2, 1)
'¡ô¥OV8ÅܼƲ֥[ ¦ÛxRÀx¦s®æ¥k8®æ(H)Àx¦s®æÈ,¥OV9ÅܼƲ֥[ ¦ÛxRÀx¦s®æ¥k9®æ(H)Àx¦s®æÈ,¥OV10ÅܼƬOªø*¼e*°ªÈ,¥OxRsÅܼƬOxRÀx¦s®æªº¤U¤@®æÀx¦s®æ
For j = 1 To UBound(P)
'¡ô³]¶¶°j°é!¥OjÅܼƱq1 ¨ìP°}¦C³Ì¤j¯Á¤Þ¸¹
Tp1 = Itemr(P(j), 5): Tp3 = Z(Itemr(P(j), 6) & "^"): Tp5 = Itemr(P(j), 4)
'¡ô¥OTp1¬O ItemªíItem NumberÈ,¥OTp3¬O¥H ItemªíItem Description Groupȹï·ÓGPªí±o¨ìªº Description
Y = Z(Q(i) & "/" & Tp1 & "/" & Tp3 & "/" & Tp5)
'¡ô¥OYÅܼƬO 5ÓÃöÁä¦r¦ê¥H"/"²Å¸¹³s±µ°_¨Óªº¦r¦ê¬dZ¦r¨å¦^¶ÇÈ
If Y = 0 Then
'¡ô¦pªGYÅܼƬO 0
Set xR = xR(2): xR.Resize(1, 14).Font.Size = 9: xR = Tp1: xR(1, 3) = Tp3: xR(1, 5) = Tp5: xR(1, 6) = Val(Itemr(P(j), 7))
'¡ô¥OxRÀx¦s®æÅܧ󬰤U¤@®æÀx¦s®æ,¥O±qxRÀx¦s®æ¥kÂX®i14®æ½d³òÀx¦s®æ¤å¦r¤j¤p9,¥OxRÀx¦s®æȬO Tp1ÅܼÆÈ,¥OxRÀx¦s®æ¥k3®æȬO Tp3ÅܼÆÈ,
'¥OxRÀx¦s¥k5®æȬO Tp5ÅܼÆÈ,¥OxRÀx¦s¥k6®æȬO Itemªíªº QuantityÈ
Z(Q(i) & "/" & Tp1 & "/" & Tp3 & "/" & Tp5) = xR.Row: xR.Rows.RowHeight = 27 * Sh: GoTo j01
'¡ô¥OYÅܼƬO 5ÓÃöÁä¦r¦ê¥H"/"²Å¸¹³s±µ°_¨Óªº¦r¦ê·íkey,item¬OxRÀx¦s®æ¦C¸¹,¥OxRÀx¦s®æ·í¦C¦C°ª¬O27Ó³æ¦ì,¥O¸õ¨ì¼Ð¥Üj01¦ì¸mÄ~Äò°õ¦æ
End If
Cells(Y, 6) = Cells(Y, 6) + Val(Itemr(P(j), 7))
'¡ô¥OYÅܼƦCFÄæÀx¦s®æȲ֥[ Itemªíªº QuantityÈ
j01: Next
With Range(xRs, xR(1, 14))
'¡ô¥H¤U¬OÃö©óxRsÀx¦s®æ¦Ü xRÀx¦s®æ¥k14®æ¤§¶¡½d³òÀx¦s®æ
.Sort KEY1:=.Item(6), Order1:=1, Header:=2: .Sort KEY1:=.Item(5), Order1:=1, Key2:=.Item(3), Order2:=1, Key3:=.Item(1), Order2:=1, Header:=2
'¡ô¥O¸Ó½d³òÀx¦s®æ°µ¤T¼h¦¸µL¼ÐÃDªº¶¶±Æ§Ç
For R = 1 To .Rows.Count: .Cells(R, 1).Resize(1, 2).Merge: .Cells(R, 3).Resize(1, 2).Merge: .Cells(R, 6).Resize(1, 2).Merge: .Cells(R, 8).Resize(1, 7).Merge: Next
'¡ô³]¶¶°j°é!¥ORÅܼƱq1 ¨ì¸Ó°Ï°ìªº¦C¼Æ,¥O¦U°Ï¬qÀx¦s®æ¦X¨Ö
End With
Next
Set xR = xR(2)
'¡ô¥OxRÀx¦s®æÅܧ󬰤U¤@®æÀx¦s®æ
A01: Next
Cells.VerticalAlignment = xlCenter: If ActiveSheet.VPageBreaks.Count + 1 = 2 Then ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
'¡ô¥O¥þ³¡Àx¦s®æ®æ¦¡««ª½¤è¦V¤å¦r¸m¤¤,'¡ô¦pªG¦C¦L½d³òªº¾î¦V¶¼Æ¬O2! ´N¥OÁa¦V¤À¶½u²¾¦Ü³Ì¥k°¼,Åý¾î¦V¶¼Æ¬O1,¦Û°Ê½Õ¾ã¨ä¥L°t¦X¦C¦L°Ñ¼Æ
https://forum.twbts.com/viewthread.php?tid=19505
xR(1, 5) = "TOTAL": xR.Resize(, 4).Merge: xR(1, 5).Resize(, 3).Merge: xR(1, 8) = V8: xR(1, 9) = V9: xR(1, 10) = Round(V10, 2): xR(1, 10).Resize(1, 5).Merge: xR.Rows.RowHeight = 27 * Sh
'¡ô¥OxRÀx¦s®æ¥k5®æÀx¦s®æȬO "TOTAL" ¦r¦ê,«e4®æ½d³ò¦X¨ÖÀx¦s®æ,¥k5®æ¶}©lÂX®i¥k3®æ½d³ò¦X¨ÖÀx¦s®æ,¥O¶ñ¤J²ÎpȨåB¦X¨ÖÀx¦s®æ,¥O¦C°ª¬O27Ó³æ¦ì
With xR.Resize(1, 14): .Font.Size = 12: .Font.Bold = True: End With
'¡ô¥OxRÀx¦s®æÂX®i¥k14®æ½d³ò¤å¦r¤j¤p¬°12 / ²ÊÅé
ActiveSheet.Names.Add Name:="PrintArea", RefersTo:=Range([A1], xR(, 14)): ActiveSheet.PageSetup.PrintArea = "PrintArea"
'¡ô¥OÀx¦s®æ½d³ò«Ø¥ß¦WºÙ¬° "PrintArea",¥O¦C¦L½d³ò¬°¦WºÙ "PrintArea"
For i = 20 To xR.Row '800-327.3=472.7 : 472.7/327.3=1.44
'¡ô³]¶¶°j°é¥OiÅܼƱq20¨ì xRÀx¦s®æ¦C¸¹
TT = Cells(i, 3) & "/" & Cells(i, 5)
'¡ô¥OTTÅܼƬOi°j°é¦CCÄæÈ»Pi°j°é¦CEÄæÈ¥H"/"²Å¸¹³s±µ²Õ¦¨ªº·s¦r¦ê
If TT = "/" Then GoTo i03
'¡ô¦pªGTTÅܼƬO "/"²Å¸¹!´N¥Oµ{§Ç¸õ¨ì¼Ð¥Üi03¦ì¸mÄ~Äò°õ¦æ
If TT = SS Or SS = "" Then
'¡ô¦pªGTTÅܼƦPSSÅÜ¼Æ ©ÎSSÅܼƬOªÅ¦r¤¸??
If xRc Is Nothing Then Set xRc = Cells(i, 3): Set xRe = Cells(i, 5) Else Set xRc = Union(xRc, Cells(i, 3)): Set xRe = Union(xRe, Cells(i, 5))
'¡ô¦pªGxRcÀx¦s®æ¬OªÅªº!´N¥OxRcÀx¦s®æ¬Oi°j°é¦CCÄæÀx¦s®æ,¥OxReÀx¦s®æ¬Oi°j°é¦CEÄæÀx¦s®æ,
'§_«h´N¥Oi°j°é¦CCÄæÀx¦s®æ¯Ç¤JxRcÀx¦s®æ¶°¤§¤¤,¥Oi°j°é¦CEÄæÀx¦s®æ¯Ç¤JxReÀx¦s®æ¶°¤§¤¤
End If
i03: RH = RH + Cells(i, 1).RowHeight
'¡ô¥ORHÅܼƲ֥[°j°é¦C°ª
If Cells(i + 1, 3) & "/" & Cells(i + 1, 5) <> TT Or RH / TH > Tts Then
'¡ô¦pªG(i+1)°j°é¦CCÄæÈ»P(i+1)°j°é¦CEÄæÈ¥H"/"²Å¸¹³s±µ²Õ¦¨ªº·s¦r¦ê¤£¦P©ó TTÅܼƩΠRHÅܼư£¥HTHÅܼƪº°Ó > TtsÅܼÆ??
If Not xRc Is Nothing Then
'¡ô¦pªGxRcÀx¦s®æ¦³ª«¥ó??
If xRc.Count > 1 Then With Intersect(xRc, xRc.Offset(1)): .Merge: .Value = "": End With: xRe.Merge: xRe.VerticalAlignment = xlTop: xRc.Offset(, 5).Merge
'¡ô¦pªGxRcÀx¦s®æ¼Æ¤j©ó1!´N¥OxRcÀx¦s®æ¶°°Ï°ì²Ä1¦C(¤£§t)¥H¤UªºÀx¦s®æ°µ¦X¨Ö,¥OxReÀx¦s®æ¶°°µ¦X¨Ö,¤å¦r°¾¤W
End If
Set xRc = Nothing: Set xRe = Nothing: SS = Cells(i + 1, 3) & "/" & Cells(i + 1, 5)
'¡ô¥OxRc xReÅܼƲMªÅ,¥OSSÅܼƬO (i+1)°j°é¦CCÄæÈ»P(i+1)°j°é¦CEÄæÈ¥H"/"²Å¸¹³s±µ²Õ¦¨ªº·s¦r¦ê
End If
If RH / TH > Tts Then Cells(i + 1, 1).PageBreak = xlPageBreakManual: RH = 0
'¡ô¦pªGRH / TH°Ó¤j©ó Tts!´N¥O¦bi+1¦C³]©w¤À¶½u,¥ORHÅܼÆÂk¹s
Next
Intersect(Range("PrintArea"), Range("PrintArea").Offset(19)).Borders.LineStyle = 1
'¡ô¥OªíÀY¥H¥~ªº¸ê®Æ®æ³]©w²Ó®Ø½u
Set Z = Nothing: Erase PGNr, Rackr, Itemr, PGr: Set xR = Nothing: Set xRs = Nothing: Set xRc = Nothing: Set xRe = Nothing
End Sub |
|