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

Excel库存追踪器:实现物品名称匹配时自动从库存数量中扣除领取数量

实现Excel库存自动扣减的两种方案

当然可以实现!针对你要的「当A列领取物品和G列库存物品匹配时,自动从H列扣减D列领取数量」的需求,我整理了两种实用方案,分别适合不同场景:

方案1:用公式实时计算当前库存(无需修改原始库存)

如果你只是想实时看到剩余库存,不想改动H列的原始库存数值,这种方法最适合——它不需要宏,新手也能快速上手。

假设你的库存数据在G2:H100(G列物品名,H列初始库存),领取记录在A2:D100(A列领取物品名,D列领取数量),你可以在**I列(当前库存)**的I2单元格输入以下公式,然后下拉填充到所有行:

=H2 - SUMIF($A$2:$A$100, G2, $D$2:$D$100)

公式解释:

  • SUMIF($A$2:$A$100, G2, $D$2:$D$100):自动统计A列中所有和当前G列物品名匹配的行,把对应的D列领取数量全部加起来。
  • 用H列的初始库存减去这个领取总量,就是当前剩余的库存。
  • 绝对引用$A$2:$A$100和$D$2:$D$100是为了下拉公式时,统计范围不会跟着偏移。

只要你新增或修改A/D列的领取记录,I列的当前库存会自动更新,非常省心。

方案2:用VBA实现自动扣减(直接修改H列库存值)

如果你需要的是填写领取记录后,直接让H列的库存数值自动减少(修改单元格实际值),那就要用到VBA宏了——它能实现真正的“自动执行扣除”,完全符合你的需求。

操作步骤如下:

  1. 打开你的Excel文件,按下Alt + F11打开VBA编辑器。
  2. 在左侧「工程资源管理器」里找到你的目标工作表(比如Sheet1),双击它打开代码编辑窗口。
  3. 粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' 只响应A列(物品名)或D列(领取数量)的单个单元格修改
    If (Target.Column = 1 Or Target.Column = 4) And Target.Cells.Count = 1 Then
        Dim itemName As String
        Dim takeQty As Double
        Dim inventoryRow As Range
        
        ' 获取当前行的物品名和领取数量
        itemName = IIf(Target.Column = 1, Target.Value, Target.Offset(0, -3).Value)
        takeQty = IIf(Target.Column = 4, Target.Value, Target.Offset(0, 3).Value)
        
        ' 验证输入有效性
        If itemName <> "" And IsNumeric(takeQty) And takeQty > 0 Then
            ' 在G列精确查找匹配的物品
            Set inventoryRow = Range("G:G").Find( _
                What:=itemName, _
                LookIn:=xlValues, _
                LookAt:=xlWhole, _
                MatchCase:=False _
            )
            
            If Not inventoryRow Is Nothing Then
                ' 检查库存是否足够,不足则提示
                If inventoryRow.Offset(0, 1).Value >= takeQty Then
                    inventoryRow.Offset(0, 1).Value = inventoryRow.Offset(0, 1).Value - takeQty
                Else
                    MsgBox "⚠️ 库存不足:" & itemName & "当前库存仅剩" & inventoryRow.Offset(0, 1).Value & ",无法领取" & takeQty & "个", vbExclamation
                End If
            Else
                MsgBox "⚠️ 未找到物品:" & itemName, vbExclamation
            End If
        End If
    End If
End Sub
  1. 保存文件时,选择「Excel 启用宏的工作簿(*.xlsm)」格式,不然宏会失效。

代码功能说明:

  • 当你在A列填写物品名,或者在D列填写领取数量时,代码会自动触发。
  • 它会在G列精确查找对应的物品,找到后就从H列库存中扣除D列的数量。
  • 额外加了两个实用提示:库存不足时弹框提醒,找不到物品时也会提示,避免误操作。

两种方案对比

方案优点缺点适用场景
公式法无需宏,操作简单,安全不修改原始库存,仅显示计算值只需要查看当前库存,不想改原始数据
VBA宏法直接修改库存数值,自动执行需要启用宏,文件需存为xlsm需要真正扣减库存,追求自动化操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 12:57:30