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

如何用Excel VBA实现油库存桶升转换及自动计算

Excel VBA 实现油库存自动更新

核心思路

先把库存统一换算为总升数,扣除购买量后,再重新转换为「桶数+剩余升数」的格式,逻辑简单不易出错。

示例代码

假设工作表中:

  • A1单元格存储当前桶数
  • B1单元格存储当前剩余升数
  • C1单元格用于输入客户购买的升数

将以下代码粘贴到对应工作表的代码模块中:

Private Sub Worksheet_Change(ByVal Target As Range)
    ' 仅当修改C1(购买升数)时触发
    If Target.Address = "$C$1" Then
        Dim totalLiters As Long
        Dim purchaseLiters As Long
        Dim newTotalLiters As Long
        Dim newBarrels As Long
        Dim newRemainingLiters As Long
        
        ' 读取当前库存和购买量
        purchaseLiters = Val(Target.Value)
        totalLiters = Range("A1").Value * 208 + Range("B1").Value
        
        ' 校验购买量有效性
        If purchaseLiters < 0 Or purchaseLiters > totalLiters Then
            MsgBox "购买量无效,请输入合理数值", vbExclamation
            Application.EnableEvents = False
            Target.ClearContents
            Application.EnableEvents = True
            Exit Sub
        End If
        
        ' 计算新库存
        newTotalLiters = totalLiters - purchaseLiters
        newBarrels = newTotalLiters \ 208 ' 整除得到桶数
        newRemainingLiters = newTotalLiters Mod 208 ' 取余得到剩余升数
        
        ' 更新库存单元格
        Application.EnableEvents = False ' 避免触发重复更新
        Range("A1").Value = newBarrels
        Range("B1").Value = newRemainingLiters
        Target.ClearContents ' 清空购买输入框
        Application.EnableEvents = True
    End If
End Sub

使用说明

  1. 打开Excel,按Alt + F11打开VBA编辑器
  2. 在左侧「工程资源管理器」中双击目标工作表(比如Sheet1)
  3. 将上述代码粘贴到右侧代码窗口
  4. 返回Excel,在A1输入初始桶数10,B1输入0(初始10桶即0剩余升数)
  5. 在C1输入1,回车后A1会自动变为9,B1变为207

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:37:04