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

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

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

­Ó°Ý¤j¤j¦pÃD
½Ð°Ý¦p¦ó¥Îexcel VBA¼g¤@­Ó¥H¥ý¶i¥ý¥Xªº¤è¦¡¨Ó¨ú±o²£«~ªº¼Æ¶q»P¥­§¡»ù®æ
¦³¥H¤Uªº¸ê®Æ,¦ý¤p§Ì¹ê¦b·Q¤£¥X¸Ó¦p¦ó¼g¥X¨Ó,¶R¶i½æ¥X¶·¥H¤é´Á¬°¥D
­n¨ú±o¥Ø«e²£«~ªº³Ñ¾l¼Æ¶q»P³Ñ¾l¼Æ¶qªº¦¨¥»§¡»ù,²£«~©ú²Ó¦pªþ¥ó

ÁʶR¤é´Á,²£«~½s¸¹,ÁʶR»ù®æ,¶i³f¼Æ¶q,¥X³f¼Æ¶q
20120102,1166,27,0,2000
20120102,116P,27.2,0,2000
20120102,5511,27.2,0,1000
20120102,5515,27.1,0,1000
20120102,585J,27,5000,0
20120102,585J,27.05,1000,0
20120102,592a,27.1,1000,0
20120102,5962,27.2,0,2000
20120102,616K,27.25,0,1000
20120102,7001,27,0,2000
20120102,7001,27.05,0,1000
20120102,7001,27.1,0,1000
20120102,700K,27.3,1000,0
20120102,779z,27.7,0,1000
20120102,8560,27.05,1000,0
20120102,8560,27.1,2000,0
20120102,8560,27.25,1000,0
20120102,8560,27.7,0,3000
20120102,8843,27,0,1000
20120102,9108,27.25,1000,0
20120102,9108,27.7,0,1000
20120102,913R,27.7,5000,0
20120102,9187,27.05,0,1000
20120102,9313,27.3,0,1000
20120102,9363,27,0,1000
20120102,9801,27.2,10000,0
20120102,9817,27.1,0,1000
20120102,983Z,27.2,0,3000
20120102,984C,27.25,0,1000
20120102,984K,27,2000,0
20120102,9887,27,0,1000
20120102,9887,27.2,0,2000
20120103,1035,27.05,2000,0
20120103,1160,27.45,5000,0
20120103,1166,27.05,0,1000
20120103,116L,27.05,0,1000
20120103,116L,27.45,0,1000
20120103,538N,27.45,0,2000
20120103,572D,27.5,0,5000
20120103,5926,27.05,4000,0
20120103,592M,27.5,0,2000
20120103,7003,27.45,2000,0
20120103,7003,27.5,10000,0
20120103,700K,27.45,0,1000
20120103,700W,27.05,1000,0
20120103,700j,27.05,4000,0
20120103,8560,27.05,2000,0
20120103,8560,27.45,0,1000
20120103,8560,27.5,0,2000
20120103,8850,27.45,0,1000
20120103,9183,27.45,1000,0
20120103,9185,27.05,1000,0
20120103,918D,27.05,0,10000
20120103,921Y,27.05,0,1000
20120103,9303,27.05,1000,0
20120103,9303,27.5,0,1000
20120103,9649,27.05,0,1000
20120103,979H,27.05,0,1000
20120103,9817,27.45,0,2000
20120104,1035,26.8,0,3000
20120104,1112,27,0,1000
20120104,1162,27.3,1000,0
20120104,116G,26.85,0,1000
20120104,5182,27,0,1000
20120104,551X,27,0,1000
20120104,585V,26.8,0,6000
20120104,700K,27.15,1000,0
20120104,700j,26.8,6000,0
20120104,700j,27,1000,0
20120104,8560,26.8,0,1000
20120104,8560,27,1000,0
20120104,8560,27.15,0,1000
20120104,8560,27.3,0,1000
20120104,884A,26.8,0,3000
20120104,9108,27,1000,0
20120104,9135,27.15,0,2000
20120104,9183,27.15,0,1000
20120104,9274,26.85,1000,0
20120104,9647,27,1000,0
20120104,9801,26.8,8000,0
20120104,981a,26.8,0,5000
20120104,982A,26.8,1000,0
20120104,9887,27,0,2000
20120104,9891,27,1000,0
20120104,989V,26.8,3000,0
20120104,989V,27.15,2000,0
20120104,989Z,27.15,1000,0

test.rar (612 Bytes)

²£«~¶R½æ¸ê®Æ©ú²Ó

¦^´_ 1# white5168

³o¼Ëªº»¡©ú,ÁÙ¬O¤£²M·¡§A­nªº?

1.¥ý¶i¥ý¥X?
2.³Ñ¾l¼Æ¶q=¶i³f¼Æ¶q-¥X³f¼Æ¶q  ¬°¦ó¦³ªº²£«~¶i³f¼Æ¶q¬°0,«o¦³¥X³f¼Æ¶q?
3.³Ñ¾l¼Æ¶qªº¦¨¥»§¡»ù¦p¦ó­pºâ?

TOP

1.¥ý¶i¥ý¥X?
©Ò¿×¥ý¶i¥ý¥X¬O«ü,¥ý¶i³fªº´N¦b¤U¤@¦¸ªº¥X³f®É,Àu¥ý½æ¥X,©Ò¥H­n·f°t¤é´Á,¦p
                      °Ó«~   ¶R¶i   ½æ¥X
20120401      A    500         0
20120402      B          0   100
20120403      A    400         0
20120404      A    400    200

20120401¶R¶iA²£«~500,¨S¦³½æ¥XA²£«~,
20120403¶R¶iA²£«~400,¨S¦³½æ¥XA²£«~,
20120404¨S¦³¶R¶iA²£«~,½æ¥XA²£«~200
©Ò¥H¨ì20120405ªºA²£«~³Ñ¤U¼Æ¶q´N­n¥H20120401ªº´î20120404ªº200¦A¥[¤W20120403ªº400»P20120404ªº400
¦]¦¹³Ñ¾l¼Æ¶q¬°(500-200)+400+400

2.³Ñ¾l¼Æ¶q=¶i³f¼Æ¶q-¥X³f¼Æ¶q  ¬°¦ó¦³ªº²£«~¶i³f¼Æ¶q¬°0,«o¦³¥X³f¼Æ¶q?
¼Æ¶q¬°0®É,ªí¥Ü·í¤Ñ¥u¦³¶i³f©Î¥X³f,¦Ó¥t¤@Ã䤣§@¶R½æªº°Ê§@,´«¥y¸Ü»¡,¦pªG¶R¶i¬°0,½æ¥X¬°5000,´Nªí¥Ü·í¤Ñ¥u¦³½æ¥X²£«~

3.³Ñ¾l¼Æ¶qªº¦¨¥»§¡»ù¦p¦ó­pºâ?
¥H²Ö­p¥[´î·í«e¶R¶i©Î½æ¥X¼Æ¶q*¶R¶i©Î½æ¥X»ù®æ¦A°£¥H¥Ø«e²£¶q³Ñ¾l¼Æ¶q,¦Ó¶R½æ­ì«h´N¬O¥H¥ý¶i¥ý¥X¬°­ì«h

TOP

¥ý¶i¥ý¥Xªº»¡©ú
http://wiki.mbalib.com/zh-tw/%E5%85%88%E8%BF%9B%E5%85%88%E5%87%BA%E6%B3%95

¦¨¥»§¡»ù
                      °Ó«~     »ù®æ   ¶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


¤@¯ëªº­pºâ
©Ò¥H¨ì20120405®É, Aªº¥­§¡¶R¶i¦¨¥» (2000*500 + 2020*400 + 2050*400 - 2050 *200 - 2010*200)/(500+400+400-200-200)=2017.78

¥ý¶i¥ý¥X
©Ò¥H¨ì20120405®É, Aªº¥­§¡¶R¶i¦¨¥»  
20120401 ¶R¶i20120404½æ¥X«áªº²£«~§¡»ù¬°: (2000*500- 2050*200)/(500-200)=1966.67,¼Æ¶q³Ñ¬°500-200=300
                      °Ó«~     »ù®æ          ¶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

20120401 ³Ñ¾lªº¦b20120405¦A½æ¥X«áªº§¡»ù¬° (1966.67*300 - 2010*200)/(300-200)=1880,¼Æ¶q³Ñ¬°100
                      °Ó«~     »ù®æ          ¶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

³Ì«á¦b20120405·í¤ÑªºA²£«~ªº§¡»ù¬° : (1880*100+2020*400 + 2050*400)/(100+400+400) = 2017.78,¼Æ¶q¬°900
                      °Ó«~     »ù®æ          ¶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

TOP

¦^´_ 3# white5168

©Ò¿×¥ý¶i¥ý¥X¬O«ü,¥ý¶i³fªº´N¦b¤U¤@¦¸ªº¥X³f®É,Àu¥ý½æ¥X,©Ò¥H­n·f°t¤é´Á,¦p
                      °Ó«~   ¶R¶i   ½æ¥X
20120401      A    500         0
20120402      B          0   100
20120403      A    400         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???            
©Ò¥H¨ì20120405ªºA²£«~³Ñ¤U¼Æ¶q´N­n¥H20120401ªº´î20120404ªº200¦A¥[¤W20120403ªº400»P20120404ªº400
¦]¦¹³Ñ¾l¼Æ¶q¬°(500-200)+400+400 <----- ¦ó¨Ó³o­Ó®w¦s   
¤£¦n·N«ä§Ú¬Ý¤£¤ÓÀ´,§Ú³o­Ó¤G¤Q¦~­ÜºÞ¬Ý¤£À´¤j¤j§Aªºªº¥ý¶i¥ý¥X??
ª©¤j¬O«ü¾É¦p¦ó¸Ñ¨M°ÝÃD,¦Ó¤£¬O²z©Ò·íµM¶·¸q°È§iª¾¸Ñ¨M¤èªk!!!:@

TOP

¦^´_ 4# white5168


    ¦A§Ú¨Ó¬Ý³o­Ó°ÝÃD¥u¬O
    1.)²Î­p²£«~ªº²Î¼Æ.....
    2.)­pºâ¶i³f»ù...
    3.)¥­§¡®w¦s³æ»ù...
    4.)¦A¶i³f¼Æ¶q²Ö­p....
    5.)¦A¶i¸ê²Ö­p¥­§¡³æ»ù....
        ¨S¦³©Ò¿×ªº¥ý¶i¥ý¥X!!!

TOP

¦^´_ 4# white5168


    (2000*500- 2050*200)/(500-200)=1966.67,¼Æ¶q³Ñ¬°500-200=300
    §A¥Îªº¤£¬O 2050 ªº 200 pcs  ¬°¦ó·|¦©°£¥¦©O?? 300 X 2000¶i»ù¤£Åܤ~¬O°Ú??? AVG ÁÙ¬O 2000 ©Î2020 [  ­Y¬O­nºâ¤]¬O (2000X300+2050X200)/500 ] ¨º¨Óªº1996.67 ³o­Ó¥Í·N¦ÑÁ󤣷|°µªº!! ·|­pªº¥­§¡³æ»ù¬O¥¿½Tªººâªk!!!
(1966.67*300 - 2010*200)/(300-200)=1880,¼Æ¶q³Ñ¬°100
       2010 ªº 200 pcs ¤]¬O¦P¼Ëªº°ÝÃD !!!

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¶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

©êº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«ä¦Û¦b : ¡i¦æµ½­n¤Î®É¡j¦æµ½­n¤Î®É¡A¥\¼w­n«ùÄò¡C¦p¿N¶}¤ô¤@¯ë¡A¥¼¿N¶}¤§«e¤d¸U¤£­n°±º¶¤õ­Ô¡A§_«h­«¨Ó´N¤Ó¶O¨Æ¤F¡C
ªð¦^¦Cªí ¤W¤@¥DÃD