Excel VBA 向加法公式动态添加不定数量数值的实现咨询
解决方案
你现有代码的核心问题是拼接公式时使用了之前的累加总和作为拼接项,会丢失历史计算明细,需要额外声明一个字符串变量存储所有单个计算项的拼接结果,即可实现需求。
修正后完整代码
Sub vba_loop_sheets() Dim i As Long 'Base sheet Dim ii As Long 'Moving sheet Dim shtCount As Long Dim ans2 As Variant ' 新增字符串变量存储拼接的公式内容 Dim formulaStr As String shtCount = Sheets.Count - 1 formulaStr = "" '初始化空字符串 For i = 7 To shtCount For ii = i + 1 To shtCount If Sheets(i).Range("B1").Value = Sheets(ii).Range("B1").Value Then ans2 = Abs(Sheets(i).Range("B8").Value - Sheets(ii).Range("B8").Value) ' 判断是否是第一个符合条件的值 If formulaStr = "" Then formulaStr = CStr(ans2) Else formulaStr = formulaStr & "+" & CStr(ans2) End If ' 每次更新公式 ThisWorkbook.Sheets("calc").Range("F5").Formula = "=" & formulaStr End If Next ii Next i End Sub
核心改动说明
- 新增
formulaStr字符串变量专门存储所有计算项的拼接结果,不会丢失明细 - 匹配到符合条件的计算值时,直接把单个值拼接到
formulaStr中,不需要额外维护累加的数值变量 - 每次拼接完成后直接给单元格设置Formula属性,Excel会自动计算结果,点击单元格就能看到所有计算项的完整审计轨迹
可选优化
如果你的计算场景中会出现负数结果,可以把拼接逻辑改成如下格式,避免公式语法错误:
formulaStr = formulaStr & "+(" & CStr(ans2) & ")"
内容的提问来源于stack exchange,提问作者Drew101
相关产品推荐
相关产品推荐

