当您单击按钮保存或提交时,我需要一些公式或函数来使用相同的id(条形码)从另一个工作表中减去,然后使用marco更改数据(数量)
invoice
![
我想知道如何从发票到库存表中减去数据
回答=发票(数量) - 库存(数量)任何人帮助我
这是我的代码......`选项显式
子inv()
昏暗作为范围昏暗rng1作为范围昏暗我作为长昏暗A作为长昏暗B作为范围昏暗rng_dest作为范围昏暗RANGE1作为范围昏暗RANGE2作为范围
'for subtract quantity in invoice and stock
Dim num1 As Integer
Dim num2 As Integer
Dim ans As Integer
Dim Stock As Long
Dim invoice As Range
Dim stk As Range
Application.ScreenUpdating = False
num1 = ThisWorkbook.Sheets("Invoice").Range("B8:B37").Value
num2 = ThisWorkbook.Sheets("STOCK").Range("B8:B").Value
ans
If num2 = num1 Then
ans = num2 - num1
'检查是否在工作表上找到发票#“发票数据”
i = 1
Do Until Sheets(“发票数据”) . 范围(“A”和i).Value =“”
If Sheets("Invoice data").Range("A" & i).Value = Sheets("Invoice").Range("H3").Value Then
'Ask overwrite invoice #?
If MsgBox("Invoice Already Exist.. Do you want to Overwrite.?", vbYesNo) = vbNo Then
Exit Sub
Else
Exit Do
End If
End If
i = i + 1
环
i = 1
设置rng_dest =表格(“发票数据”) . 范围(“D:D”)设置RANGE1 =表格(“发票数据”) . 范围(“G:G”)
'如果找到发票#,则删除行
Do Until Sheets(“发票数据”) . 范围(“A”和i).Value =“”
If Sheets("Invoice data").Range("A" & i).Value = Sheets("Invoice").Range("H3").Value Then
Sheets("Invoice data").Range("A" & i).EntireRow.Delete
i = 1
End If
i = i + 1
环
'在工作表发票数据的列D:G中找到第一个空行
Do Until WorksheetFunction.CountA(rng_dest.Rows(i))= 0
i = i + 1
Do Until WorksheetFunction.CountA(RANGE1.Rows(i)) = 0
i = i + 1
Loop
环
'Copy range B16:I38 on sheet Invoice
设置rng =表格(“发票”) . 范围(“B8:B37”)设置RANGE2 =表格(“发票”) . 范围(“D8:D37”)
'将包含值的行复制到工作表发票数据
For A = 1 To rng.Rows.Count
If WorksheetFunction.CountA(rng.Rows(A)) <> 0 Then
rng_dest.Rows(i).Value = rng.Rows(A).Value
If WorksheetFunction.CountA(RANGE2.Rows(A)) <> 0 Then
RANGE1.Rows(i).Value = RANGE2.Rows(A).Value
Sheets("Invoice data").Range("A" & i).Value = Sheets("Invoice").Range("H3").Value
'Copy Date
Sheets("Invoice data").Range("B" & i).Value = Sheets("Invoice").Range("H2").Value
'Copy Company name
Sheets("Invoice data").Range("C" & i).Value = Sheets("Invoice").Range("B1").Value
i = i + 1
End If
End If
下一个A.
MsgBox(“发票已保存!”)
Application.ScreenUpdating = True
Sheets("Invoice").Range("H3").Value = _
Sheets("Invoice").Range("H3").Value + 1
结束子
Sub Formc()
UserForm1.Show
结束子
`
1 回答
这种情况不是Excel的构建方式 . 它可以做到,但是由于不了解依赖关系,因此存在许多危险 .
首先,Quantity列应该相对于起始库存计数,因此您可以使用起始计数作为基准水平,然后减去发票中引用的任何库存数量 .
我将添加一个新列“起始库存余额”,其中包含每个项目的初始库存计数 .
然后,您可以创建一个包含当前库存的列,该库考虑了起始余额,并使用发票表中的相同代码减去所有项目的总和 . 如果起始库存余额在D列中,并且当前库存应在E列中计算,请使用以下行的公式:
单词:取D2中的值并减去发票栏D中可找到的所有项目的总和,其中发票栏C与当前行中的库存表栏B的描述相同 .
根据您的情况调整单元格范围和工作表名称 .
尽管@vacip声称这可以通过Vlookup完成,但它不能 .
编辑:或者如果您想将公式基于条形码而不是描述,请使用