white5168 發表於 12-5-1 00:36

Excel VBA 寫出計算產品剩餘數量與均價

本帖最後由 white5168 於 12-5-1 00:41 編輯

請問有人能用Excel VBA 寫出一個計算,類似先進先出的方法,來統計目前有產品剩餘數量與均價?
如圖分別為資料與最後畫面
最後畫面的部份對於日期是可調整的,如日期變動,則最後資料所呈現的畫面也會改變


jiuhtsair 發表於 12-5-1 08:20

到麻辣家族尋解吧!
http://forum.twbts.com/index.php

white5168 發表於 12-5-1 08:52

已經在麻辣家族po文了,很久都沒有人可以成功寫出來
希望這裡的高手能有辦法

huama 發表於 12-5-1 14:04

怎麼定義先進先出@@每日結算還是...
這個很難嗎?

white5168 發表於 12-5-1 15:08

原始資料
                  商品   價格   買進   賣出
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

類似先買進先賣出的觀念
20120404結算時,20120401的A產品平均買進成本仍為2000,數量剩為500-200=300,表示20120401當天交易數量還有剩300
                     商品   價格          買進   賣出
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
而計算到20120404交易後,A產品全部的均價為(2000*300 + 2020*400 + 2050*400)/(300+400+400)=2025.5,數量剩為300+400+400=1100
20120404結算時,盈虧為(2050-2000)*200=10000

20120405結算時,20120401的A產品平均買進成本仍為2000,數量剩為300-200=100,表示20120401當天交易數量還有剩100
                      商品   價格          買進   賣出
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
而計算到20120405交易後,A產品全部的均價為(2000*100+ 2020*400 + 2050*400)/(100+400+400)=2031.1,數量剩為100+400+400=900
20120405結算時,盈虧為(2010-2000)*200=2000

第二筆出貨大於第一筆庫存的說明如下
如果再多ㄧ個20120406的交易如下
                      商品   價格          買進   賣出
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產品平均買進成本仍為2000,當20120406交易後,由於20120401只剩下100不夠20120406賣出的數量200,需以20120403的數量來補足,所以20120403剩餘400-200=200,而20120403的A產品平均買進成本為2020
                      商品   價格          買進   賣出
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
而計算到20120406交易後,A產品全部的均價為(2020*200 + 2050*400)/(200+400)=2040,數量剩為200+400=600(這是我需要的)
20120406結算時,盈虧為(2040-2000)*100+(2040-2020)*200=8000

eclipse_fuzzy 發表於 12-5-2 12:32

white5168 發表於 12-5-1 15:08 static/image/common/back.gif
原始資料
                  商品   價格   買進   賣出
20120401      A    2000   500         0


落落長...看的眼花撩亂...
建議你先把演算法釐清,用流程圖表示,這樣比較容易理解吧...
落落長,看都懶的看ㄟ....

ribbit 發表於 12-6-20 07:57

本帖最後由 ribbit 於 12-6-20 08:01 編輯

我對VBA的語法一直搞不懂後面的複製代碼是啥,有人能指導一下嗎?謝謝{:4_160:}

關於重複記錄取得數據進表內一直弄不懂
所以只能手動敲單超級累,
以時間為軸重複不斷紀錄歷史交易資訊
再透過歷史資料做複雜分析與比對
若能模組化去作重複工作,這樣就可省去許多時間與精力{:4_186:}

ribbit 發表於 12-6-20 08:26

本帖最後由 ribbit 於 12-6-20 08:29 編輯

white5168 發表於 12-5-1 15:08 http://www.coco-in.net/static/image/common/back.gif
原始資料
                  商品   價格   買進   賣出
20120401      A    2000   500         0


就像加減乘除從一加到十的作法就以下幾種:

1. 從1+2+3+4+5+6+7+8+9+10=55 乖乖的逐一加上去

2. 10-1=9、2+3=5 、(9*5)+10=55模組拆解法

3.程式FORa=1    NEXT a=a+1、 GOTO9

以上方法都有人做結果相同但效率卻差粉多{:4_93:}

頁: [1]
查看完整版本: Excel VBA 寫出計算產品剩餘數量與均價