Excel VBA COUNTIFS公式调用变量存储的工作表名称语法问题
VBA公式嵌入工作表名变量语法修正方案
修正后可直接运行的代码
'为AT部门写入公式,将新工作表对应数据拉取到主表 ' wsDst1为存储最新工作表名称的字符串变量 .Range("F" & DstLstRw3).FormulaR1C1 = "=IFERROR(COUNTIFS('" & wsDst1 & "'!C[-4],""AT"",'" & wsDst1 & "'!C,1),0)" .Range("G" & DstLstRw3).FormulaR1C1 = "=IFERROR(COUNTIFS('" & wsDst1 & "'!C[-5],""AT"",'" & wsDst1 & "'!C,0),0)" .Range("H" & DstLstRw3).FormulaR1C1 = "=IFERROR(((RC[-2]+RC[-1])-RC[-1])/(RC[-2]+RC[-1]),0)"
核心调整说明
- 变量拼接规则:VBA中双引号包裹的内容会作为纯文本写入公式,要插入变量值需要将变量放在双引号外,用
&符号和前后的字符串片段拼接 - 工作表名兼容处理:工作表名前后拼接单引号
',可以兼容带空格、特殊字符的工作表名,避免公式报错 - 引用格式匹配:你代码中使用了
C[-4]/RC[-2]这类R1C1风格的引用,需要把原来的.Formula属性改为.FormulaR1C1,否则Excel无法正确解析引用格式
可选优化:H列公式可以简化为"=IFERROR(RC[-2]/(RC[-2]+RC[-1]),0)",计算逻辑和原公式完全一致。
内容的提问来源于stack exchange,提问作者iQuikDraw
相关产品推荐
相关产品推荐

