我需要在公式“sumif”中迭代“条件”。变量类型是“字符串”但我的代码不起作用。我无法保持变量字符串的条件。如果我能用“变量”解决问题,代码就是一个例子。我只需要简单地迭代该变量。代码是:
Private Sub cmd_psps_Click()
Dim prueba As Integer
Dim var As String
prueba = Sheets("PRUEBAS").Index
var = "a"
Sheets(prueba).Cells(5, 16).Formula = "=sumif(" & Range(Cells(4, 13),
Cells(8, 13)).Address() & "," & var & "," & Range(Cells(4, 14), Cells(8,
14)).Address() & ")"
End Sub
问题在于“& var&”,使用该代码,工作表中的单元格如下所示:
=SUMAR.SI($M$4:$M$8;a;$N$4:$N$8)
但我需要:
=SUMAR.SI($M$4:$M$8;"a";$N$4:$N$8)
我可以使用带有简单文本的条件,例如“a”。但我需要用变量迭代条件。
答案 0 :(得分:0)
不是严格的答案,但是对于代码可读性,当使用手动Excel的公式构造时,最好有一个方便的函数来连接字符串:
Function FormatString(s As String, ParamArray args() As Variant)
Dim x%
For x = LBound(args) To UBound(args)
s = Replace$(s, "{" & x & "}", args(x))
Next
FormatString = s
End Function
用法:
Sub G()
MsgBox FormatString("I have {0} apples and {1} oranges", 10, 20)
End Sub
您可以使用占位符{0}
,{1}
等参数。这就像C#的String.Format所做的那样。
因此,您的公式将如下所示:
Sub G()
Dim sFormula$
Dim var$
var = "A1"
sFormula = FormatString( _
"=SUM({0},{1},{2})", _
Range(Cells(4, 13), Cells(8, 13)).Address(), _
var, _
Range(Cells(4, 14), Cells(8, 14)).Address())
End Sub
现在代码看起来更具可读性。