VBA设置单元格公式异常:SUM(EB:EB)显示为SUM(EB:(EB))求助
问题根源与修复方法
嘿,这问题我之前也踩过坑!核心原因是你搞混了VBA里两个公式属性的引用格式要求:
你写的"=R[0]C[-5]/SUM(EB:EB)"是R1C1样式的引用,但你用的是.Formula属性——这个属性默认只认A1格式的公式,Excel没法正确解析R1C1语法,就把R[0]C[-5]硬转成了当前单元格对应的A1地址(比如EB16),而SUM(EB:EB)被错误解析成了不伦不类的SUM(EB:(EB))。
直接修复代码
把.Formula换成.FormulaR1C1属性就行,这是VBA专门用来处理R1C1格式公式的:
With Selection .Merge .Offset(0, 2).Resize(2, 4).Merge .Offset(0, 7).Resize(2, 5).Merge ' 改用FormulaR1C1适配R1C1格式的公式 .Offset(0, 7).FormulaR1C1 = "=R[0]C[-5]/SUM(C[EB])" .Offset(0, 7).NumberFormat = "0.0%" End With
补充两种可选写法
- 如果你想继续用
.Formula,那得把公式改成A1格式,但这样会丢失R1C1的相对引用灵活性(比如批量处理时没法自动适配单元格位置):.Offset(0, 7).Formula = "=EB16/SUM(EB:EB)" - 要是想在R1C1里用列号代替列名(更严谨),可以先获取EB列的列号再拼接:
Dim ebCol As Integer ebCol = Columns("EB").Column .Offset(0, 7).FormulaR1C1 = "=R[0]C[-5]/SUM(C" & ebCol & ")"
内容的提问来源于stack exchange,提问作者aDev
相关产品推荐
相关产品推荐

