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

如何在VBA带引号的公式中写入&使其识别为字符串而非运算符

正确写法

你不需要额外用Chr(38)或者额外加引号来处理公式里的&,直接按VBA字符串拼接规则写即可,正确代码如下:

' 公式拼接代码
Dim formulaStr As String
formulaStr = "=AVERAGEIF(RC[-4]:R[" & Total & "]C[-4],"">""&" & z & "*MAX(RC[-4]:R[" & Total & "]C[-4]))"

' 写入单元格时如果需要适配本地Excel的分号分隔符,用.FormulaR1C1Local属性
Range("目标单元格地址").FormulaR1C1Local = formulaStr
' 如果不需要适配本地分隔符,默认用逗号分隔的话用.FormulaR1C1即可
' Range("目标单元格地址").FormulaR1C1 = formulaStr

错误原因说明

  1. 你原来的写法里额外添加的Chr(34)& Chr(38) & Chr(34)会在最终生成的公式里输出"&"(带引号的&符号),而你预期的公式里&是公式本身的连接运算符,不需要用引号包裹,所以完全不需要加这一段代码。
  2. 你原来的写法中z & *MAX是VBA语法错误,这里的&会被识别为VBA的字符串拼接运算符,*前面没有对应的值,直接触发语法报错。

效果验证

当Total = 6382、z = 0.5时,上面的代码生成的公式和你预期的完全一致:

=AVERAGEIF(C31:C6413,">"&0.5*MAX(C31:C6413))

如果你的Excel区域设置用分号作为参数分隔符,使用FormulaR1C1Local属性赋值后,会自动转换为分号格式:

=AVERAGEIF(C31:C6413;">"&0.5*MAX(C31:C6413))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 04:36:05