如何用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
相关产品推荐
相关产品推荐

