Worksheetfunction.sumif返回字符串

时间:2016-06-17 20:36:38

标签: vba excel-vba excel

我在vba中有多个worksheetfunction.sumifs并且它们正在正确计算,但是当我尝试站起来时

worksheetfunction.sumifs val = Application.SumIf(Range("D1:D20"), "" *          "&temp&" * "", Range("C1:C20")) & " , -" & Application.SumIf(Range("E1:E20"), "" * "&temp&" * "", Range("H1:H20")) & " , +" & Application.SumIf(Range("F1:F20"), "" * "&temp&" * "", Range("I1:I20")) & " , -" & Application.SumIf(Range("G1:G20"), "" * "&temp&" * "", Range("J1:J20")) 

变量以字符串形式返回,计算结果如“80-100-0-0-0-0”。我想workheetfunction.sumif实际上总结sumifs的乘积。我已经尝试将worksheetfunction.sum放在sumifs周围,但无济于事。有任何想法吗?我这样做的原因是不在不同的单元格中使用公式来加速我正在使用的非常大的Excel。我也试过用“, - ”来做sumifs,但也没有喜悦。

1 个答案:

答案 0 :(得分:1)

所以我设置了这样的表格:

enter image description here

然后我运行了这段代码:

Sub show()
Dim temp As String
Dim val As Double
temp = "test"
val = Application.SumIf(Range("D1:D20"), "* " & temp & " *", Range("C1:C20")) - Application.SumIf(Range("E1:E20"), "* " & temp & " *", Range("H1:H20")) _
    + Application.SumIf(Range("F1:F20"), "* " & temp & " *", Range("I1:I20")) - Application.SumIf(Range("G1:G20"), "* " & temp & " *", Range("J1:J20"))
Debug.Print val
End Sub

结果是11

enter image description here

当手动双重检查时,这是正确的答案:

enter image description here

除非我遗漏了什么。