You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求Excel VBA解决方案:自动化库存收发的数量增减操作

实现Excel库存自动扣减/归还的方案

1. 准备发放与归还标签页

  • 新建两个标签页,分别命名为Issue(发放)和Return(归还)
  • Issue页表头设置:Type、Inventory ID、Name、Size、Quantity Issued、Status(用于反馈操作结果)
  • Return页表头设置:Type、Inventory ID、Name、Size、Quantity Returned、Status

2. VBA自动更新方案(高效批量处理)

发放页自动扣减库存代码

右键点击Issue标签页 → 选择「查看代码」,粘贴以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Dim lookupName As String, lookupSize As String
    Dim qtyIssued As Integer
    Dim targetCell As Range
    
    ' 仅监听Quantity Issued列(假设为E列,按需调整)
    If Target.Column <> 5 Or Target.Row = 1 Then Exit Sub
    
    lookupName = Target.Offset(0, -2).Value ' 读取Name字段(C列)
    lookupSize = Target.Offset(0, -1).Value ' 读取Size字段(D列)
    qtyIssued = Target.Value
    
    If qtyIssued <= 0 Then
        Target.Offset(0, 1).Value = "请输入正数"
        Exit Sub
    End If
    
    ' 通过Type字段匹配对应库存标签页(Type在B列)
    On Error Resume Next
    Set ws = ThisWorkbook.Worksheets(Target.Offset(0, -3).Value)
    On Error GoTo 0
    
    If ws Is Nothing Then
        Target.Offset(0, 1).Value = "对应库存标签页不存在"
        Exit Sub
    End If
    
    ' 查找Name+Size匹配的库存行
    Set targetCell = ws.Range("C:C").Find(What:=lookupName, LookIn:=xlValues, LookAt:=xlWhole)
    Do While Not targetCell Is Nothing
        If ws.Range("D" & targetCell.Row).Value = lookupSize Then
            ' 扣减库存(quantity in stock在E列,按需调整)
            If ws.Range("E" & targetCell.Row).Value >= qtyIssued Then
                ws.Range("E" & targetCell.Row).Value = ws.Range("E" & targetCell.Row).Value - qtyIssued
                Target.Offset(0, 1).Value = "库存已扣减"
            Else
                Target.Offset(0, 1).Value = "库存不足"
            End If
            Exit Do
        End If
        Set targetCell = ws.Range("C:C").FindNext(targetCell)
    Loop
    
    If targetCell Is Nothing Then
        Target.Offset(0, 1).Value = "未找到匹配库存项"
    End If
End Sub

归还页自动增加库存代码

右键点击Return标签页 → 选择「查看代码」,粘贴以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Dim lookupName As String, lookupSize As String
    Dim qtyReturned As Integer
    Dim targetCell As Range
    
    ' 仅监听Quantity Returned列(假设为E列,按需调整)
    If Target.Column <> 5 Or Target.Row = 1 Then Exit Sub
    
    lookupName = Target.Offset(0, -2).Value ' 读取Name字段(C列)
    lookupSize = Target.Offset(0, -1).Value ' 读取Size字段(D列)
    qtyReturned = Target.Value
    
    If qtyReturned <= 0 Then
        Target.Offset(0, 1).Value = "请输入正数"
        Exit Sub
    End If
    
    ' 通过Type字段匹配对应库存标签页(Type在B列)
    On Error Resume Next
    Set ws = ThisWorkbook.Worksheets(Target.Offset(0, -3).Value)
    On Error GoTo 0
    
    If ws Is Nothing Then
        Target.Offset(0, 1).Value = "对应库存标签页不存在"
        Exit Sub
    End If
    
    ' 查找Name+Size匹配的库存行
    Set targetCell = ws.Range("C:C").Find(What:=lookupName, LookIn:=xlValues, LookAt:=xlWhole)
    Do While Not targetCell Is Nothing
        If ws.Range("D" & targetCell.Row).Value = lookupSize Then
            ' 增加库存(quantity in stock在E列,按需调整)
            ws.Range("E" & targetCell.Row).Value = ws.Range("E" & targetCell.Row).Value + qtyReturned
            Target.Offset(0, 1).Value = "库存已增加"
            Exit Do
        End If
        Set targetCell = ws.Range("C:C").FindNext(targetCell)
    Loop
    
    If targetCell Is Nothing Then
        Target.Offset(0, 1).Value = "未找到匹配库存项"
    End If
End Sub

3. 代码适配调整

  • 列位调整:如果你的quantity in stock、Size等字段不在代码默认的列,修改对应单元格引用(比如ws.Range("E" & targetCell.Row)改为实际列号)
  • 标签页匹配:确保Type字段的值和库存标签页名称完全一致(例如Type值为headware,对应标签页名也为headware)
  • 唯一性校验:保证每个库存页内的Name+Size组合唯一,避免重复匹配错误

4. 非VBA公式方案(适合新手)

若不想使用VBA,可通过SUMIFS公式实现库存自动计算:
在库存页的quantity in stock单元格(比如E2)输入以下公式,下拉覆盖所有库存行:

=原始库存值 - SUMIFS(Issue!$E:$E, Issue!$C:$C, $C2, Issue!$D:$D, $D2, Issue!$B:$B, "headware") + SUMIFS(Return!$E:$E, Return!$C:$C, $C2, Return!$D:$D, $D2, Return!$B:$B, "headware")
  • 替换原始库存值为该单元格原有的库存数量
  • 替换"headware"为当前库存标签页的名称
  • 确保Excel开启自动重算(文件→选项→公式→勾选「自动重算」)

内容的提问来源于stack exchange,提问作者Brynne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:16:09