電腦excel的程式

2007-03-06 3:26 pm
我想在excel下做一個買賣存貨表,在開出發票後,或列印後,將不同類別貨品在存貨表中自動減去,在存貨表中如何建立函數:
例子;發票開出A貨=1,B貨=2,C貨=2
存貨表原有;A=10,B=10,C=10
即餘數;A=9,B=8,C=8
如何寫這marco和數表函數
請指教
更新1:

可能表達不清楚,補充一下:發票表1及存貨表2,編号001某東西,今天開出發票;銷售001物品50件!!!存貨表編号001,現存100件,該結存50件,,,,,,如果重新建入銷售量一次,++--就容易得多,,,,只想每次開出發票,某某編号貨品,在存貨表都能自動减去而得出結存

回答 (2)

2007-03-09 8:24 am
✔ 最佳答案
先設 發票! 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
以上全部, 均是我的工作經驗, 希望對你有幫助。
2007-03-06 9:19 pm
問題如果只是加減就好簡單,但係在之前你要比佢知道你買乜,同埋數量,
去邊可以搵到數據Setting, 重有其他情況等等.........., 所以並唔好似你唸一個
Marco 咁簡單。

2007-03-07 18:17:49 補充:
我已簡單寫子一個marco比你參考, 我想成個file sent e-mail比你,可以的話請你留個E-mail地址。 Sub Dosub()Dim Sht1 As ObjectDim Sht2 As ObjectDim F_Range As RangeDim cell As VariantDim H As Integer, I As Integer, J As Integer, K As Integer

2007-03-07 18:18:33 補充:
Set Sht1 = Worksheets("invoice")Set Sht2 = Worksheets("Stock")Set F_Range = Sht2.Range("A2:A20")For I = 6 To 10 'Suppose can enter 4 items in one invoiceSht1.ActivateSht1.Cells(I, 3).SelectIf IsEmpty(Selection) = True ThenExit For

2007-03-07 18:19:22 補充:
Else: K = Selection.Value: J = ActiveCell.Offset(0, 3).ValueEnd IfFor H = 1 To 20 'Suppose 20 itemsSht2.ActivateFor Each cell In F_Rangecell.SelectIf cell = K Then

2007-03-07 18:20:15 補充:
ActiveCell.Offset(0, 2) = ActiveCell.Offset(0, 2) - JGoTo 100End IfNext cellNext H100 Next IEnd Sub

2007-03-07 18:42:15 補充:
我自已巳試過,基本上巳合符你的基本要求,希望你有用。


收錄日期: 2021-04-18 21:39:55
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070306000051KK00472

檢視 Wayback Machine 備份