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

[µo°Ý] ½Ð°Ý¦p¦ó¥Îexcel VBA¼g¤@­Ó¥H¥ý¶i¥ý¥Xªº¤è¦¡¨Ó¨ú±o²£«~ªº¼Æ¶q»P¥­§¡»ù®æ

¦^´_ 16# white5168

¥»©«¤w¸g¨ì¤F16¼Ó¤F,¦n¹³µª®×¨S¦³¤@ÂI¶i®i,µo°ÝªÌ¸Ó«ä¦Ò³o­Ó°ÝÃD

µo°ÝªÌªº¤u§@:´£¨Ñ½d¨Ò(¦Ò¶q¦UºØ¼Æ¾Ú)§@¸Ô²Ó²M·¡¤§»¡©ú,ÅýµªÃDªÌ¤@¤U´Nª¾¹D§A­n¤°»ò
³Ñ¤Uªº¥æµ¹µªÃDªÌ

hsiehªº«Øij:«Øij±z±N·Q­nÅã¥Üªºµ²ªGª½±µ¥Î¤âºâ¥X«á¡A¶ñ¤J·Q­n¹ê²{ªº¦ì¸m¡A¨Ã¦b¹j¾ÀÄæ¦ì¶ñ¤J§A­pºâªº¨Ì¾Ú
§Ú§â²£«~½s¸¹¤@¼Ëªº¶°¤¤,½Ð§â§A­nªºµª®×¶ñ¤J¨Ã§@»¡©ú,³o¼Ë¸û²M·¡(©Î¬O§Aµª®×­n¦p¦ó§e²{¤]¥t§@»¡©ú)
µªÃDªÌ¦³ºÃ´b,µo°ÝªÌ¥²¶·­nÀ°¦£Âç²M,¤£µM¤£·|¦³µª®×,¤[¤F¤]·|¥¢¥h­@¤ß

TOP

[ª©¥DºÞ²z¯d¨¥]
  • Hsieh(2012-4-30 10:11): ½Ð¥ÎÀÉ®×»¡©ú¡Aµª®×©ñ¸m¦ì¸m¡A»P©Ò»Ý¸ê®Æ¦³­þ¨Ç

¥»©«³Ì«á¥Ñ white5168 ©ó 2012-4-30 20:15 ½s¿è

Hsieh»¡ªº«Ü¹ï,·PÁÂHsiehªÈ¥¿,¬O§Ú·d¿ù¤FÆ[©À¤]Åý¤j®a¤@°_»~·|¤F,¦b¦¹¸ò¤j®a»¡Án©êºp,¯Ô»~¤j®a³o»ò¦hªº®É¶¡
§Ú­«·s¾ã²z¤@¤U§Ú»Ý­n¤º®eªº¥¿½TÆ[©À

­ì©l¸ê®Æ
                    °Ó«~     »ù®æ   ¶R¶i   ½æ¥X
20120401      A    2000   500         0
20120402      B     1500       0    100
20120403      A    2020   400         0
20120404      A    2050   400    200
20120405      A    2010        0    200

Ãþ¦ü¥ý¶R¶i¥ý½æ¥XªºÆ[©À
20120404µ²ºâ®É,20120401ªºA²£«~¥­§¡¶R¶i¦¨¥»¤´¬°2000,¼Æ¶q³Ñ¬°500-200=300,ªí¥Ü20120401·í¤Ñ¥æ©ö¼Æ¶qÁÙ¦³³Ñ300
                       °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A     2000         300         0
20120402      B     1500               0    100
20120403      A     2020          400         0
20120404      A     2050          400         0
20120405      A     2010               0    200
¦Ó­pºâ¨ì20120404¥æ©ö«á,A²£«~¥þ³¡ªº§¡»ù¬°(2000*300 + 2020*400 + 2050*400)/(300+400+400)=2025.5,¼Æ¶q³Ñ¬°300+400+400=1100
20120404µ²ºâ®É,¬ÕÁ«¬°(2050-2000)*200=10000

20120405µ²ºâ®É,20120401ªºA²£«~¥­§¡¶R¶i¦¨¥»¤´¬°2000,¼Æ¶q³Ñ¬°300-200=100,ªí¥Ü20120401·í¤Ñ¥æ©ö¼Æ¶qÁÙ¦³³Ñ100
                      °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    2000         100         0
20120402      B     1500              0    100
20120403      A    2020          400         0
20120404      A    2050          400         0
20120405      A    2010               0         0
¦Ó­pºâ¨ì20120405¥æ©ö«á,A²£«~¥þ³¡ªº§¡»ù¬°(2000*100+ 2020*400 + 2050*400)/(100+400+400)=2031.1,¼Æ¶q³Ñ¬°100+400+400=900
20120405µ²ºâ®É,¬ÕÁ«¬°(2010-2000)*200=2000

²Ä¤Gµ§¥X³f¤j©ó²Ä¤@µ§®w¦sªº»¡©ú¦p¤U
¦pªG¦A¦h£¸­Ó20120406ªº¥æ©ö¦p¤U
                      °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    2000          100         0
20120402      B    1500               0    100
20120403      A    2020          400         0
20120404      A    2050          400         0
20120405      A    2010               0         0
20120406      A    2040               0    300

20120406µ²ºâ®É,20120401ªºA²£«~¥­§¡¶R¶i¦¨¥»¤´¬°2000,·í20120406¥æ©ö«á,¥Ñ©ó20120401¥u³Ñ¤U100¤£°÷20120406½æ¥Xªº¼Æ¶q200,»Ý¥H20120403ªº¼Æ¶q¨Ó¸É¨¬,©Ò¥H20120403³Ñ¾l400-200=200,¦Ó20120403ªºA²£«~¥­§¡¶R¶i¦¨¥»¬°2020
                      °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    2000               0         0
20120402      B    1500               0    100
20120403      A    2020          200         0
20120404      A    2050          400         0
20120405      A    2010               0         0
20120406      A    2040               0         0
¦Ó­pºâ¨ì20120406¥æ©ö«á,A²£«~¥þ³¡ªº§¡»ù¬°(2020*200 + 2050*400)/(200+400)=2040,¼Æ¶q³Ñ¬°200+400=600(³o¬O§Ú»Ý­nªº)
20120406µ²ºâ®É,¬ÕÁ«¬°(2040-2000)*100+(2040-2020)*200=8000

¨Ï¥Î¸ê®Æ¦b£¸¶}©lPO¤å®É,§Y¥I¤WÀɦW¬°test.rar,½Ð¦U¦ì¥J²Ó¹î¬Ý

TOP

¦^´_ 14# white5168
­ì©l¸ê®Æ
                    °Ó«~     »ù®æ   ¶R¶i   ½æ¥X
20120401      A    2000   500         0
20120402      B     1500       0    100
20120403      A    2020   400         0
20120404      A    2050   400    200
20120405      A    2010        0    200

Ãþ¥ý¶R¶i¥ý½æ¥X
20120404µ²ºâ®É, 20120401ªºA²£«~¥­§¡¶R¶i¦¨¥»,»Ý¥H·í®É³Ñ¾l¨Ó­pºâ§Y(2000*500- 2050*200)/(500-200)=1966.67,¼Æ¶q³Ñ¬°500-200=300,ªí¥Ü20120401·í¤Ñ¥æ©ö¼Æ¶qÁÙ¦³³Ñ300(³o¬O§Ú»Ý­nªº)
¨Ì§A¥H¤W±Ô­z¡A20120404¤§«eA²£«~¦@¦³3µ§¸ê®Æ(20120401¡AA¡A2000¡A500¡A0)¡B(20120403¡AA¡A2020¡A400¡A0)¡B(20120404¡AA¡A2050¡A400¡A200)
¬JµM¥ý¶i¥ý¥X20120404³oµ§½æ¥X¡AÀ³¸Ó¬O¥Î20120401³o­Ó»ù¦ì2000
¨º»ò³Ñ¤Uªº¤£¬OÀ³¸Ó(2000*(500-200)+2020*400+2050*400)/(500+400+400-200)¤~¬O¦¨¥»»ù¦ì¶Ü?
³oºØ±M·~ªº·|­pª¾Ãѧڤ@ÂI³£¨S¦³¡A¤£ª¾¹D§Úªº²z¸Ñ»P¹ê°È®t§O¦b­þ?
«Øij±z±N·Q­nÅã¥Üªºµ²ªGª½±µ¥Î¤âºâ¥X«á¡A¶ñ¤J·Q­n¹ê²{ªº¦ì¸m¡A¨Ã¦b¹j¾ÀÄæ¦ì¶ñ¤J§A­pºâªº¨Ì¾Ú
³o¼Ë©Î³\¤ñ¸û®e©öÂç²M©Ò¿×¥ý¶i¥ý¥Xªº·§©À¡C
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¨C¶µ²£«~ªº³B²z¤è¦¡¬Ò¬Û¦P,¥u®t¦U¶µ¤£¦P²£«~¬ï´¡¨ä¤¤,B¶µ²£«~¥i¦p¤Uªí©Ò¥Ü

                       °Ó«~     »ù®æ   ¶R¶i   ½æ¥X
20120401      A    2000    500         0
20120402      B     1500        0    100
20120403      A     2020   400         0
20120403      B     1300   500    100
20120404      A     2050   400    200
20120404      B     1250        0    200
20120405      A     2010        0    700
20120405      B     1310   200         0

ÁÙ¦³£¸ÂI,¯à§_ºâ¥X¨C¶µ²£«~½æ¥X«áªº¬ÕÁ«?

TOP

¦^´_ 12# white5168
A ¶µ²£«~²£«~ªº³B²z¹Lµ{·~¤w¤F¸Ñ¡A
¤é´Á¡B°Ó«~¡B»ù®æ¡B¶R¶i¡B½æ¥X¡B²£«~§¡»ù (¬O§_¼W¦C¡H¥H«KÀH®É¯à´£¨Ñ°Ñ¦Ò¸ê°T)¡A
¦A½Ð±Ð 20120402      B    1500               0    100  ³o¶µ²£«~¡A
§A·|«ç»ò¨Ó³B²z¡A¥BµL B ²£«~¤§¶i³f¬ö¿ý¡H

TOP

¥»©«³Ì«á¥Ñ white5168 ©ó 2012-4-29 13:34 ½s¿è

¨º¦pªG²Ä¤Gµ§¥X³f¤j©ó²Ä¤@µ§®w¦s®É....§A­n¦p¦óºâ??

§Ú«e­±¦³¸Ô²ÓÁ|¨Ò,½Ð¥J²Ó¾\Ū,
¤p§Ì­è±µÄ²Excel VBA¹ê¦b«Ü¤£¼ôªR,½Ð¦U¦ì¤j¤jÀ°¦£

­ì©l¸ê®Æ
                    °Ó«~     »ù®æ   ¶R¶i   ½æ¥X
20120401      A    2000   500         0
20120402      B     1500       0    100
20120403      A    2020   400         0
20120404      A    2050   400    200
20120405      A    2010        0    200

Ãþ¥ý¶R¶i¥ý½æ¥X
20120404µ²ºâ®É, 20120401ªºA²£«~¥­§¡¶R¶i¦¨¥»,»Ý¥H·í®É³Ñ¾l¨Ó­pºâ§Y(2000*500- 2050*200)/(500-200)=1966.67,¼Æ¶q³Ñ¬°500-200=300,ªí¥Ü20120401·í¤Ñ¥æ©ö¼Æ¶qÁÙ¦³³Ñ300(³o¬O§Ú»Ý­nªº)
                       °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    1966.67   300         0
20120402      B     1500              0    100
20120403      A    2020          400         0
20120404      A    2050          400         0
20120405      A    2010               0    200
¦Ó­pºâ¨ì20120404¥æ©ö«á,A²£«~¥þ³¡ªº§¡»ù¬°(1966.67*300 + 2020*400 + 2050*400)/(300+400+400)=2016.365,¼Æ¶q³Ñ¬°300+400+400=1100(³o¬O§Ú»Ý­nªº)

20120405µ²ºâ®É, 20120401ªºA²£«~¥­§¡¶R¶i¦¨¥»,»Ý¥H·í®É³Ñ¾l¨Ó­pºâ§Y(1966.67*300-2010*200)/(300-200)=1880,¼Æ¶q³Ñ¬°300-200=100,ªí¥Ü20120401·í¤Ñ¥æ©ö¼Æ¶qÁÙ¦³³Ñ100(³o¬O§Ú»Ý­nªº)
                      °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    1880          100         0
20120402      B     1500              0    100
20120403      A    2020          400         0
20120404      A    2050          400         0
20120405      A    2010               0         0
¦Ó­pºâ¨ì20120405¥æ©ö«á,A²£«~¥þ³¡ªº§¡»ù¬°(1880*100+ 2020*400 + 2050*400)/(100+400+400)=2017.78,¼Æ¶q³Ñ¬°100+400+400=900(³o¬O§Ú»Ý­nªº)

²Ä¤Gµ§¥X³f¤j©ó²Ä¤@µ§®w¦sªº»¡©ú¦p¤U
¦pªG¦A¦h£¸­Ó20120406ªº¥æ©ö¦p¤U
                      °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    1880          100         0
20120402      B     1500              0    100
20120403      A    2020          400         0
20120404      A    2050          400         0
20120405      A    2010               0         0
20120406      A    2040               0    300

20120406µ²ºâ®É, 20120401»P20120403ªºA²£«~¥­§¡¶R¶i¦¨¥»,»Ý¥H·í®É³Ñ¾l¨Ó­pºâ§Y(1880*100+2020*400-2040*300)/(100+400-300)=1920,¼Æ¶q³Ñ¬°100+400-300=200,ªí¥Ü20120401·í¤Ñ¥æ©ö¼Æ¶q¤w¸g¨S¦³³Ñ¤F,»Ý­n20120403ªº¼Æ¶q¨Ó¤ä´©¤~¦æ,©Ò¥H20120403³Ñ¾l200(³o¬O§Ú»Ý­nªº)
                      °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    1880               0         0
20120402      B    1500               0    100
20120403      A    2020          200         0
20120404      A    2050          400         0
20120405      A    2010               0         0
20120406      A    2040               0         0
¦Ó­pºâ¨ì20120406¥æ©ö«á,A²£«~¥þ³¡ªº§¡»ù¬°(2020*200 + 2050*400)/(200+400)=2040,¼Æ¶q³Ñ¬°200+400=600(³o¬O§Ú»Ý­nªº)

TOP

²³æ»¡ ´N¬O²Ä¤@µ§¥X³f¥Î²Ä¤@µ§¶i³f¥h¦©°£(¥Ñ¤W¦Ó¤U),¦A­pºâ¾l¼Æªº¥­§¡»ù!!
¨º¦pªG²Ä¤Gµ§¥X³f¤j©ó²Ä¤@µ§®w¦s®É....§A­n¦p¦óºâ??

TOP

©êºpÅý¤j®a¦³ÂI·d¿ù,¥H¤U§Ú¦A­«·s¸ÑÄÀ¤@¦¸§Ú©Ò¿×ªº¥ý¶i¥ý¥X,¤]³\¸ò¤@¯ë¤H©Ò»{ª¾ªº­ÜºÞ¤è¦¡¦³¸¨®t,½Ð¦U¦ì¦h¦h¥]¨ç,§ÚÀ³¸Ó»¡³o¬OÃþ¦ü¥ý¶i¥ý¥Xªº§@ªk
§Ú»Ý­n«á­±²Ä¤@µ§½æ¥Xªº¥æ©ö¨Ó´î¥h²Ä¤@µ§¶R¶iªº,¦Ó¥B»Ý¥H²Ä¤@µ§¶R¶iªº³¡¥÷©Ò³Ñ¾l¼Æ¶q¨Ó­pºâ·í«e¤é´Á©Ò³Ñ°Ó«~¼Æ¶qªº¥­§¡¦¨¥»

­ì©l¸ê®Æ 
                    °Ó«~     »ù®æ   ¶R¶i   ½æ¥X
20120401      A    2000   500         0
20120402      B     1500       0    100
20120403      A    2020   400         0
20120404      A    2050   400    200
20120405      A    2010        0    200

Ãþ¥ý¶R¶i¥ý½æ¥X
20120404µ²ºâ®É, 20120401ªºA²£«~¥­§¡¶R¶i¦¨¥»,»Ý¥H·í®É³Ñ¾l¨Ó­pºâ§Y(2000*500- 2050*200)/(500-200)=1966.67,¼Æ¶q³Ñ¬°500-200=300,ªí¥Ü20120401·í¤Ñ¥æ©ö¼Æ¶qÁÙ¦³³Ñ300(³o¬O§Ú»Ý­nªº)
                       °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    1966.67   300         0
20120402      B     1500              0    100
20120403      A    2020          400         0
20120404      A    2050          400         0
20120405      A    2010               0    200
¦Ó­pºâ¨ì20120404¥æ©ö«á,A²£«~¥þ³¡ªº§¡»ù¬°(1966.67*300 + 2020*400 + 2050*400)/(300+400+400)=2016.365,¼Æ¶q³Ñ¬°300+400+400=1100(³o¬O§Ú»Ý­nªº)

20120405µ²ºâ®É, 20120401ªºA²£«~¥­§¡¶R¶i¦¨¥»,»Ý¥H·í®É³Ñ¾l¨Ó­pºâ§Y(1966.67*300-2010*200)/(300-200)=1880,¼Æ¶q³Ñ¬°300-200=100,ªí¥Ü20120401·í¤Ñ¥æ©ö¼Æ¶qÁÙ¦³³Ñ100(³o¬O§Ú»Ý­nªº)
                      °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    1880          100         0
20120402      B     1500              0    100
20120403      A    2020          400         0
20120404      A    2050          400         0
20120405      A    2010               0         0
¦Ó­pºâ¨ì20120405¥æ©ö«á,A²£«~¥þ³¡ªº§¡»ù¬°(1880*100+ 2020*400 + 2050*400)/(100+400+400)=2017.78,¼Æ¶q³Ñ¬°100+400+400=900(³o¬O§Ú»Ý­nªº)

¦pªG¦A¦h£¸­Ó20120406ªº¥æ©ö¦p¤U
                      °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    1880          100         0
20120402      B     1500              0    100
20120403      A    2020          400         0
20120404      A    2050          400         0
20120405      A    2010               0         0
20120406      A    2040               0    300

20120406µ²ºâ®É, 20120401»P20120403ªºA²£«~¥­§¡¶R¶i¦¨¥»,»Ý¥H·í®É³Ñ¾l¨Ó­pºâ§Y(1880*100+2020*400-2040*300)/(100+400-300)=1920,¼Æ¶q³Ñ¬°100+400-300=200,ªí¥Ü20120401·í¤Ñ¥æ©ö¼Æ¶q¤w¸g¨S¦³³Ñ¤F,»Ý­n20120403ªº¼Æ¶q¨Ó¤ä´©¤~¦æ,©Ò¥H20120403³Ñ¾l200(³o¬O§Ú»Ý­nªº)
                      °Ó«~     »ù®æ          ¶R¶i   ½æ¥X
20120401      A    1880               0         0
20120402      B    1500               0    100
20120403      A    2020          200         0
20120404      A    2050          400         0
20120405      A    2010               0         0
20120406      A    2040               0         0
¦Ó­pºâ¨ì20120406¥æ©ö«á,A²£«~¥þ³¡ªº§¡»ù¬°(2020*200 + 2050*400)/(200+400)=2040,¼Æ¶q³Ñ¬°200+400=600(³o¬O§Ú»Ý­nªº)

TOP

°Ó«~     »ù®æ   ¶R¶i   ½æ¥X
20120401      A    2000   500         0
20120402      B     1500       0    100
20120403      A    2020   400         0
20120404      A    2050   400    200
20120405      A    2010        0    200

20120401¶R¶iA²£«~500,¨S¦³½æ¥XA²£«~,
20120403¶R¶iA²£«~400,¨S¦³½æ¥XA²£«~,
20120404¨S¦³¶R¶iA²£«~,½æ¥XA²£«~200
              20120404      A    400    <----¨S¦³¶R¶i¦ó¨Ó 400???            

³o¸Ìªº¨C¤@µ§¶R½æ¬Ò¬°³æ¿W¿W¥ß,§Ú¨Ã¥¼±j½Õ§Ú©Ò¦Cªº½d¨Ò¬O­ÜºÞ,½Ð¤Å¥H¥Í·Nªº¨¤«×¨Ó¬Ý

TOP

¥»©«³Ì«á¥Ñ register313 ©ó 2012-4-28 18:25 ½s¿è

¦^´_ 4# white5168

¬O¦³³\¦hºÃÂI¥¼Âç²M

Á`¤§¥ýµ¹¨Ç¼Æ¾Ú(¤@¯ëªººâªk),¦A¤@¨B¤@¨B§Ë²M·¡§a
  1. Sub aa()
  2. Dim d1, d2 As Object
  3. Set d1 = CreateObject("scripting.dictionary")
  4. Set d2 = CreateObject("scripting.dictionary")
  5. [G1:I65536] = ""
  6. [G1:I1] = Array("²£«~½s¸¹", "³Ñ¾l¼Æ¶q", "¥­§¡»ù®æ")
  7. For B = 2 To [B2].End(xlDown).Row
  8.   If Not d1.exists(Cells(B, 2).Value) Then
  9.      d1.Add Cells(B, 2).Value, Cells(B, 4) - Cells(B, 5)
  10.      d2.Add Cells(B, 2).Value, (Cells(B, 4) - Cells(B, 5)) * Cells(B, 3)
  11.   Else
  12.      d1(Cells(B, 2).Value) = d1(Cells(B, 2).Value) + Cells(B, 4) - Cells(B, 5)
  13.      d2(Cells(B, 2).Value) = d2(Cells(B, 2).Value) + (Cells(B, 4) - Cells(B, 5)) * Cells(B, 3)
  14.   End If
  15. Next B
  16. [G2].Resize(d1.Count, 1) = Application.Transpose(d1.keys)
  17. [H2].Resize(d1.Count, 1) = Application.Transpose(d1.items)
  18. [I2].Resize(d2.Count, 1) = Application.Transpose(d2.items)
  19. For I = 2 To d2.Count + 1
  20.   If Cells(I, "H") = 0 Then
  21.      Cells(I, "I") = 0
  22.   Else
  23.      Cells(I, "I") = Cells(I, "I") / Cells(I, "H")
  24.   End If
  25. Next I
  26. End Sub
½Æ»s¥N½X

TOP

        ÀR«ä¦Û¦b : ¡i®É¶¡¦¨´N¤@¤Á¡j®É¶¡¥i¥H³y´N¤H®æ¡A¥i¥H¦¨´N¨Æ·~¡A¤]¥i¥HÀx¿n¥\¼w¡C
ªð¦^¦Cªí ¤W¤@¥DÃD