VBA中使用带变量的Sumif.Formula时字符串条件引号缺失问题
解决VBA中SUMAR.SI公式变量条件缺失引号的问题
你遇到的问题本质是VBA拼接公式字符串时,没有给文本类型的条件添加公式所需的双引号。在Excel公式里,文本条件必须用双引号包裹,但直接把var拼进去的话,只会把变量的值a直接插入,不会自动带上引号。
解决方法很简单:在拼接var的时候,给它前后加上转义的双引号(VBA中用两个连续的双引号""来表示一个实际的双引号)。
修改后的代码如下:
Private Sub cmd_psps_Click() Dim prueba As Integer Dim var As String prueba = Sheets("PRUEBAS").Index var = "a" ' 在var前后添加转义双引号,确保公式里的文本条件带引号 Sheets(prueba).Cells(5, 16).Formula = "=SUMAR.SI(" & Range(Cells(4, 13), Cells(8, 13)).Address() & ",""" & var & """," & Range(Cells(4, 14), Cells(8, 14)).Address() & ")" End Sub
关键修改说明:
把原来的& var &替换成& """ & var & """ &(或者紧凑写法&"""" & var & """" &),这样拼接后,变量var的值就会被双引号包裹,生成的公式里就会出现符合要求的"a"。
运行修改后的代码,单元格里生成的公式就会变成你需要的样式:
=SUMAR.SI($M$4:$M$8;"a";$N$4:$N$8)
后续如果要迭代不同的条件字符串,只需要改变var的值(比如var = "b"或者从其他单元格读取动态值),公式都会自动为条件带上正确的双引号。
内容的提问来源于stack exchange,提问作者Staryun
相关产品推荐
相关产品推荐

