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

如何用VBA实现Excel相邻单元格相减并保留首日数据

问题原因

原代码存在两处逻辑缺陷:

  • 直接对B2到数据末尾的整段区域做运算,第一个计算结果会引用B1(一般为表头/空值)计算B2-B1,导致首行结果异常
  • 没有单独留存首日原始数据的逻辑

调整后可用代码

Sub Differences()
    Dim dataRng As Range
    Set dataRng = Range("B2", Range("B2").End(xlDown))
    ' 结果列首行保留首日原始数据
    dataRng.Offset(0, 3).Cells(1) = dataRng.Cells(1).Value
    ' 从第二行开始计算前一单元格减后一单元格
    With dataRng.Offset(1, 0).Resize(dataRng.Rows.Count - 1)
        .Offset(0, 3) = Evaluate(.Offset(-1, 0).Address & "-" & .Address)
    End With
End Sub

调整说明

  • 单独给偏移3列后的结果列第一个位置赋值B2的原始值,满足首日数据留存需求
  • 仅对B3及以下的区域做差值计算,避免引用表头行B1的无效数据
  • 运算顺序为前一单元格(上一行B列值)减后一单元格(当前行B列值),匹配需求逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:54:03