標題:
[發問]
報表消帳扣除數量
[打印本頁]
作者:
home1913
時間:
2014-3-1 22:47
標題:
報表消帳扣除數量
請教一下各位大師,目前報表需使用到類SAP功能.
例如附件中D欄如有對應到各點,各點總量扣除購買量的剩餘數.
感謝大師們指導.
[attach]17627[/attach]
作者:
sunnyso
時間:
2014-3-2 09:24
回復
1#
home1913
可否再詳細點解說
作者:
home1913
時間:
2014-3-2 12:18
如D3.D4來說,數量=A2前7碼對應到(G1:K1)後,D3.D4需使用右表中相同貨號之數量扣除C3.C4後的數量.
而D6數量=A5前7碼對應到(G1:K1)後,扣除先前剩餘的數量(EX
3-C6).
PS.條件A欄必須要和右表(G1:K1)有相對應才可扣除相同貨號的數量.
以上.感謝
作者:
yen956
時間:
2014-3-4 10:20
回復
3#
home1913
試試看:
Option Base 1
Option Explicit
Private Sub CommandButton1_Click()
Dim i, j, 列數, Barcode數, 原庫存量 As Integer
Dim code1, code2, 欄名 As String
Dim findCell, findRng As Range
Barcode數 = [B1].End(xlDown).Row - 1
'1. 插入輔助欄 欄A(手動)
'2. 將 欄C 貨號合併, 且 欄A 填入遞增數列
[C2].Resize(Barcode數, 1) = ""
[E2].Resize(Barcode數, 1) = ""
For i = 2 To Barcode數 + 1
Cells(i, 1) = i
If Left(Cells(i, 2), 1) = "w" Then
code1 = Left(Cells(i, 2), 7)
Else
code2 = Left(Cells(i, 2), 6)
Cells(i, 3) = code1 & code2
End If
Next
'3. 按 主鍵 欄C, 次鍵 欄A 遞增排序
[A1].Resize(Barcode數 + 1, 5).Sort _
Key1:=Range("C1"), Order1:=xlAscending, _
Key2:=Range("A1"), Order2:=xlAscending, _
Header:=xlYes
'4. 重新寫入公式, 防操作不小心刪掉公式
[F3] = "=MATCH(F2,G2:G7,0)" '0 →精確查詢, 不可省略, Lookup_array 可以依任意次序排列。
[F6] = "=MATCH(F5,H1:L1,0)" '1 →可省略, 找到等於或僅次於 lookup_value 的值, Lookup_array必須遞增排序
'-1→不可省略, 會找到等於或大於 lookup_value 的最小值, Lookup_array必須遞減排序
[F8] = "=INDEX(H2:L7,F3,F6)" '傳回查詢範圍, 列與欄 的交义點的值
'以上三列為 庫存表固定大小 使用,
'若 庫存表固定大小 會變動, 請改用下列五列
' 列數 = CStr([G1].End(xlDown).Row)
' 欄名 = Chr([G1].End(xlToRight).Column + 63)
' [F3] = "=MATCH(F2,G2:G" & 列數 & ",0)"
' [F6] = "=MATCH(F5,H1:" & 欄名 & "1,0)"
' [F8] = "=INDEX(H2:" & 欄名 & "7,F3,F6)"
'5. 主程式
i = 1
Do
i = i + 1
If Cells(i, 3) = "" Then GoTo done1:
[F5] = Left(Cells(i, 3), 7) '將Barcode存到 [F5], 供 MATCH 查詢"欄"用
[F2] = Right(Cells(i, 3), 6) '將貨號存到 [E2], 供 MATCH 查詢"列"用
'[F8] = 庫存表中的 庫存量
Cells(i, 5) = [F8] - Cells(i, 4) '存量 = 原庫存量 - 銷售量
'如果 貨號 重覆, 第二筆開始, 則
If Cells(i, 3) = Cells(i + 1, 3) Then
Do
i = i + 1
If Cells(i, 3) = "" Then GoTo done1:
Cells(i, 5) = Cells(i - 1, 5) - Cells(i, 4) '存量 = 上一筆存量 - 銷售量
Loop Until i > Barcode數 Or Cells(i, 3) <> Cells(i + 1, 3)
End If
Loop Until i > Barcode數
done1:
'6. 按原序排序
[A1].Resize(Barcode數 + 1, 5).Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Header:=xlYes
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)