✔ 最佳答案
先設 發票! A5:A10是型號, F5:F10是數量, A1是日期, A2是發票號, A3 是客戶名稱
存貨! A3:A102是型號, B3;B102是數量
Sub InvToStock()
Set xxx = Sheets(“發票”).Range(“A5:A10”)
Set yyy = Sheets(“存貨”).Range(“A5:A104”)
For Each xx In xxx
If IsEmpty(xx) Then Exit Sub
For Each yy In yyy
If xx = yy Then
yy.Offset(0, 1) = yy.Offset(0, 1) - xx.Offset(0, 5)
Exit For
End If
Next
Next
End Sub
以上巨集, 祇是針對你的問題而編寫的, 如你祇是學習Excel之用, 是可以的。
但如你是想應用在公司業務上, 是不可以的。原因:
1.) 存貨進出, 一定要有每筆的紀錄, 方便以後核對
2.) 存貨量是: 期初存貨 +進貨量 - 銷貨量 而計算出來, 不能單方面靠銷貨的資料而做出存貨表的。
如你真是需要做一個買賣存貨表, 便需要至少加多兩個工作表:
銷貨! →記錄每筆銷貨的紀錄
購貨! →記錄每筆購貨的紀錄
以上兩個工作表, 均設A欄是 日期, B欄是 發票號, C欄是 客戶, D欄是型號, E欄是數量
用以下的巨集, 可將每筆發票的資料, 自動輸入 銷貨!
Sub InvToSales()
Set xxx = Sheets(“發票”).Range(“A5:A10”)
invdate = Sheets(“發票”).Range(“A1”)
invnum = Sheets(“發票”).Range(“A2”)
company = Sheets(“發票”).Range(“A3”)
Set zz = Sheets(“銷貨”).Range(“D2:D10000”).End(xlDown)
For Each xx In xxx
If IsEmpty(xx) Then Exit Sub
r = r + 1
zz.Offset(r, 0) = xx
zz.Offset(r, 1) = xx.Offset(0, 5)
zz.Offset(r, -3) = invdate
zz.Offset(r, -2) = invnum
zz.Offset(r, -1) = company
Next
購貨紀錄, 通常是人手輸入資料
另再寫一巨集(用公式亦可以)將銷貨! 和 購貨! 的資料計算在 存貨!, 便隨時可Update你的存貨
由於篇幅關係, 此巨集暫且不寫, 如有需要, 請留下e-mail
以上全部, 均是我的工作經驗, 希望對你有幫助。