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

[µo°Ý] Âù°j°é©Î¦h°j°é ¼gªk

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

¦^´_ 1# fantersy


    ÁÂÁ«e½úµoªí¦¹¥DÃD»P½d¨Ò
«á¾ÇÂǦ¹©«½m²ß°}¦C»P¦r¨å,¾Ç²ß¤è®×¦p¤U,½Ð«e½ú°Ñ¦Ò

¥H¦r¨å°O¦í­pºâ¥²­n¸ê®Æ,¦A­Ë¥X°µ­pºâ:

Option Explicit
Sub TEST()
Dim Brr, Crr, Drr, Z, i&, T$
Crr = Range([axmr450!R1], [axmr450!A65536].End(3))
Drr = Range([®w¦s!G1], [®w¦s!A65536].End(3))
Brr = Range([­q³æ¥¼¥æ!B3], [­q³æ¥¼¥æ!B65536].End(3))
Set Z = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(Drr)
   T = Trim(Drr(i, 5)) & "|" & Trim(Drr(i, 1))
   Z(T) = Z(T) + Val(Drr(i, 6))
Next
For i = 2 To UBound(Crr)
   T = Trim(Crr(i, 7))
   Z(T & "|¼Æ¶q") = Z(T & "|¼Æ¶q") + Val(Crr(i, 10))
   Z(T & "|Á`¥X") = Z(T & "|Á`¥X") + Val(Crr(i, 18))
Next
For i = 1 To UBound(Brr)
   T = Brr(i, 1)
   Brr(i, 1) = Z(T & "|¼Æ¶q") - Z(T & "|Á`¥X") - Z("JMZ1" & "|" & T)
Next
[­q³æ¥¼¥æ!G3].Resize(UBound(Brr), 1) = Brr
Set Z = Nothing: Erase Brr, Drr, Crr
End Sub
==============================
¸É¥R:
½d¨Ò¤¤¦³1¸U¦h­Ó¤£¥i¨£ªº ¤å¦r®Ø©Î¹Ï¤ù....
Sub §R°£ª«¥ó()
With ActiveSheet.DrawingObjects     
   If .Count > 0 Then MsgBox .Count: .Delete
End With
End Sub

============================
¸É¥R¥t¤@¸Ñªk: (¥H¦r¨å°O¦í®Æ¸¹©Ò¦bªº°}¦C¯Á¤Þ¦C¸¹)

Option Explicit
Sub TEST_1()
Dim Brr, Crr, Drr, Z, i&, T$
Crr = Range([axmr450!R1], [axmr450!A65536].End(3))
Drr = Range([®w¦s!G1], [®w¦s!A65536].End(3))
Brr = Range([­q³æ¥¼¥æ!B3], [­q³æ¥¼¥æ!B65536].End(3))
Set Z = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(Brr): Z(Brr(i, 1)) = i: Brr(i, 1) = 0: Next
For i = 2 To UBound(Crr)
   T = Trim(Crr(i, 7))
   If Z(T) <> "" Then Brr(Z(T), 1) = Brr(Z(T), 1) + Val(Crr(i, 10)) - Val(Crr(i, 18))
Next
For i = 2 To UBound(Drr)
   T = Trim(Drr(i, 1))
   If Trim(Drr(i, 5)) = "JMZ1" And Z(T) <> "" Then Brr(Z(T), 1) = Brr(Z(T), 1) - Val(Drr(i, 6))
Next
[­q³æ¥¼¥æ!G3].Resize(UBound(Brr), 1) = Brr
Set Z = Nothing: Erase Brr, Drr, Crr
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 3# fantersy


    ÁÂÁ«e½ú¦^´_
¥H¤U¬O½Æ²ß¤ß±oµù¸Ñ,½Ð«e½ú°Ñ¦Ò

Sub TEST_1()
Dim Brr, Crr, Drr, Z, i&, T$
'¡ô«Å§iÅܼÆ:(Brr, Crr, Drr, Z)¬O³q¥Î«¬ÅܼÆ,i¬Oªø¾ã¼Æ,T¬O¦r¦êÅܼÆ
Crr = Range([axmr450!R1], [axmr450!A65536].End(3))
'¡ô¥OCrrÅܼƬO¤Gºû°}¦C,¥H"axmr450"¤u§@ªí[R1]¨ìAÄæ³Ì«á¦³¤º®eÀx¦s®æ­È±a¤J
Drr = Range([®w¦s!G1], [®w¦s!A65536].End(3))
'¡ô¥ODrrÅܼƬO¤Gºû°}¦C,¥H "®w¦s"¤u§@ªí[G1]¨ìAÄæ³Ì«á¦³¤º®eÀx¦s®æ­È±a¤J
Brr = Range([­q³æ¥¼¥æ!B3], [­q³æ¥¼¥æ!B65536].End(3))
'¡ô¥OBrrÅܼƬO¤Gºû°}¦C,¥H "­q³æ¥¼¥æ"¤u§@ªí[B3]¨ìBÄæ³Ì«á¦³¤º®eÀx¦s®æ­È±a¤J
Set Z = CreateObject("Scripting.Dictionary")
'¡ô¥OZÅܼƬO¦r¨å
For i = 1 To UBound(Brr): Z(Brr(i, 1)) = i: Brr(i, 1) = 0: Next
'¡ô³]¶¶°j°é!±q1¨ìBrr°}¦CÁa¦V³Ì¤j¯Á¤Þ¦C¸¹
'¥Oi°j°é¦C²Ä1ÄæBrr°}¦C­È·íkey,item¬OiÅܼÆ,¯Ç¤JZ¦r¨å¤¤
'¥Oi°j°é¦C²Ä1ÄæBrr°}¦C­È=0

For i = 2 To UBound(Crr)
'¡ô³]¶¶°j°é!±q1¨ìCrr°}¦CÁa¦V³Ì¤j¯Á¤Þ¦C¸¹
   T = Trim(Crr(i, 7))
   '¡ô¥OTÅܼƬO ¥h°£ÀY§ÀªÅ¥Õ¦r¤¸(i°j°é¦C²Ä7ÄæCrr°}¦C­È)ªº¦r¦ê
   If Z(T) <> "" Then Brr(Z(T), 1) = Brr(Z(T), 1) + Val(Crr(i, 10)) - Val(Crr(i, 18))
   '¡ô¦pªG¥HTÅܼƬdZ¦r¨å¦^¶Çitem­È¤£¬OªÅ¦r¤¸!
   '´N¥OTÅܼƬdZ¦r¨å¦^¶Çitem(­ìTÅܼƦbBrr°}¦C©Ò¦bªº¦C¸¹)
   '¥O¸Ó¦C¸¹²Ä1ÄæBrr°}¦C­È+Val¨ç¼Æ­È(i°j°é¦C10ÄæCrr°}¦C­È)-Val¨ç¼Æ­È(i°j°é¦C18ÄæCrr°}¦C­È)

Next
For i = 2 To UBound(Drr)
   T = Trim(Drr(i, 1))
   '¡ô¥OTÅܼƬO ¥h°£ÀY§ÀªÅ¥Õ¦r¤¸(i°j°é¦C²Ä1ÄæDrr°}¦C­È)ªº¦r¦ê
   If Trim(Drr(i, 5)) = "JMZ1" And Z(T) <> "" Then Brr(Z(T), 1) = Brr(Z(T), 1) - Val(Drr(i, 6))
   '¡ô¦pªGi°j°é¦C²Ä5ÄæDrr°}¦C­È¸g¥h°£ÀY§ÀªÅ¥Õ¦r¤¸«áªº¦r¦ê="JMZ1"!
   '¦Ó¥B¥HTÅܼƬdZ¦r¨å¦^¶Ç­È¤£¬OªÅ¦r¤¸!
   '´N¥OTÅܼƬdZ¦r¨å¦^¶Çitem(­ìTÅܼƦbBrr°}¦C©Ò¦bªº¦C¸¹)
   '¥O¸Ó¦C¸¹²Ä1ÄæBrr°}¦C­È-Val¨ç¼Æ­È(i°j°é¦C6ÄæDrr°}¦C­È)

Next
[­q³æ¥¼¥æ!G3].Resize(UBound(Brr), 1) = Brr
'¡ô¥O"­q³æ¥¼¥æ"¤u§@ªí[G3]¦V¤UÂX®i Brr°}¦CÁa¦V³Ì¤j¯Á¤Þ¸¹¦Cªº½d³òÀx¦s®æ­È¥HBrr°}¦C±a¤J
Set Z = Nothing: Erase Brr, Drr, Crr
'¡ôÄÀ©ñÅܼÆ
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

¦^´_ 1# fantersy


    ¥H¤U¬O½Æ²ß ¥H¦r¨å°O¦í­pºâ¥²­n¸ê®Æ,¦A­Ë¥X°µ­pºâªº¤ß±oµù¸Ñ,½Ð«e½ú°Ñ¦Ò

Option Explicit
Sub TEST()
Dim Brr, Crr, Drr, Z, i&, T$
'¡ô«Å§iÅܼÆ:(Brr, Crr, Drr, Z)¬O³q¥Î«¬ÅܼÆ,i¬Oªø¾ã¼Æ,T¬O¦r¦êÅܼÆ
Crr = Range([axmr450!R1], [axmr450!A65536].End(3))
'¡ô¥OCrrÅܼƬO¤Gºû°}¦C,¥H"axmr450"¤u§@ªí[R1]¨ìAÄæ³Ì«á¦³¤º®eÀx¦s®æ­È±a¤J
Drr = Range([®w¦s!G1], [®w¦s!A65536].End(3))
'¡ô¥ODrrÅܼƬO¤Gºû°}¦C,¥H "®w¦s"¤u§@ªí[G1]¨ìAÄæ³Ì«á¦³¤º®eÀx¦s®æ­È±a¤J
Brr = Range([­q³æ¥¼¥æ!B3], [­q³æ¥¼¥æ!B65536].End(3))
'¡ô¥OBrrÅܼƬO¤Gºû°}¦C,¥H "­q³æ¥¼¥æ"¤u§@ªí[B3]¨ìBÄæ³Ì«á¦³¤º®eÀx¦s®æ­È±a¤J
Set Z = CreateObject("Scripting.Dictionary")
'¡ô¥OZ³o³q¥Î«¬ÅܼƬO¦r¨å
For i = 2 To UBound(Drr)
'¡ô³]¶¶°j°é!iÅܼƱq2 ¨ìDrr°}¦C³Ì¤j¯Á¤Þ¦C¸¹
   T = Trim(Drr(i, 5)) & "|" & Trim(Drr(i, 1))
   '¡ô¥OT³o¦r¦êÅܼƬO
   '¥H"|"²Å¸¹³s±µ°j°é¦C5/1ÄdDrr°}¦C­È¥hÀY§ÀªÅ¥Õ¦r¤¸ªº·s¦r¦ê

   Z(T) = Z(T) + Val(Drr(i, 6))
   '¡ô¥O¥HTÅܼƬ°key,item¬O²Ö¥[i°j°é¦C²Ä6ÄdDrr°}¦C­ÈÂà¤Æªº¼Æ­È
   '¯Ç¤JZ¦r¨å¸Ì

Next
For i = 2 To UBound(Crr)
'¡ô³]¶¶°j°é!iÅܼƱq2 ¨ìCrr°}¦C³Ì¤j¯Á¤Þ¦C¸¹
   T = Trim(Crr(i, 7))
   '¡ô¥OTÅܼƬO i°j°é¦C²Ä7ÄdCrr°}¦C­È¥hÀY§ÀªÅ¦r¤¸ªº·s¦r¦ê
   Z(T & "|¼Æ¶q") = Z(T & "|¼Æ¶q") + Val(Crr(i, 10))
   '¡ô¥OTÅܼƳs±µ "|¼Æ¶q" ²Õ¦¨ªº·s¦r¦ê¬°key,
   'item¬O²Ö¥[i°j°é¦C²Ä10ÄdCrr°}¦C­ÈÂà¤Æªº¼Æ­È
   '¯Ç¤JZ¦r¨å¸Ì

   Z(T & "|Á`¥X") = Z(T & "|Á`¥X") + Val(Crr(i, 18))
   '¡ô¥OTÅܼƳs±µ "|Á`¥X" ²Õ¦¨ªº·s¦r¦ê¬°key,
   'item¬O²Ö¥[i°j°é¦C²Ä18ÄdCrr°}¦C­ÈÂà¤Æªº¼Æ­È
   '¯Ç¤JZ¦r¨å¸Ì

Next
For i = 1 To UBound(Brr)
'¡ô³]¶¶°j°é!iÅܼƱq1 ¨ìBrr°}¦C³Ì¤j¯Á¤Þ¦C¸¹
   T = Trim(Brr(i, 1))
   '¡ô¥OTÅܼƬO i°j°é¦C²Ä1ÄdBrr°}¦C­È¥hÀY§ÀªÅ¦r¤¸ªº·s¦r¦ê
   Brr(i, 1) = Z(T & "|¼Æ¶q") - Z(T & "|Á`¥X") - Z("JMZ1" & "|" & T)
   '¡ô¥Oi°j°é¦C1ÄæBrr°}¦C­È¬O TÃöÁä¦r²Õ¦X¦r¦ê¬dZ¦r¨å¸g©Ò»Ý³W«h­pºâ«áªº­È
Next
[­q³æ¥¼¥æ!G3].Resize(UBound(Brr), 1) = Brr
'¡ô¥O"­q³æ¥¼¥æ"¤u§@ªí[G3]¦V¤UÂX®iBrr°}¦CÁa¦V³Ì¤j¯Á¤Þ¦C¸¹¦C,
'¦¹ÂX®i½d³òÀx¦s®æ­È¥HBrr°}¦C­È±a¤J

Set Z = Nothing: Erase Brr, Drr, Crr
'¡ô¥OÄÀ©ñÅܼÆ
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

        ÀR«ä¦Û¦b : ¦a¤WºØ¤Fµæ¡A´N¤£©öªø¯ó¡F¤ß¤¤¦³µ½¡A´N¤£©ö¥Í´c¡C
ªð¦^¦Cªí ¤W¤@¥DÃD