我是VBA的新手,想要添加两个值。我的代码是:
Cells(7 + i + 1, 6).Select
sum1 = "=SUMIFS('[" + strFil_1 + "]Tooling forecast template'!R6C20:R500C20,'[" + strFil_1 + "]Tooling forecast template'!R6C7:R500C7,""=ME1"", '[" + strFil_1 + "]Tooling forecast template'!R6C5:R500C5,""=Test Tool"", '[" + strFil_1 + "]Tooling forecast template'!R6C13:R500C13,""=" + ArrME1(i) + """, '[" + strFil_1 + "]Tooling forecast template'!R6C6:R500C6,""<>Actual tool/equipment change"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Cancelled"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Not Ordered"")"
sum2 = "=SUMIFS('[" + strFil_1 + "]Tooling forecast template'!R6C20:R500C20,'[" + strFil_1 + "]Tooling forecast template'!R6C7:R500C7,""=ME1"", '[" + strFil_1 + "]Tooling forecast template'!R6C5:R500C5,""=Hard Tool"", '[" + strFil_1 + "]Tooling forecast template'!R6C13:R500C13,""=" + ArrME1(i) + """, '[" + strFil_1 + "]Tooling forecast template'!R6C6:R500C6,""<>Actual tool/equipment change"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Cancelled"", '[" + strFil_1 + "]Tooling forecast template'!R6C23:R500C23,""<>Not Ordered"") "
ActiveCell.FormulaR1C1 = sum1 + sum2
我得到总和的原因是因为如果我将它作为一个表达式,那么行将太大而且VBA不会正确地将它分成两行,如果可以的话请发布它。
我用上面的代码得到的错误是它只显示TRUE或FALSE而不是实际的总和。
答案 0 :(得分:1)
如果您想要的是两个公式的结果之和,那么我建议将实际公式放入两个实际单元格并添加结果。调用一个“硬工具”结果,另一个调用“测试工具”结果,比如说。
或者,如果你想在VBA中运行SUMIFS()
函数,那么你可以使用类似的东西(对于第一部分,未经测试)
With Workbooks(strFil_1).Worksheets("Tooling forecast template")
sum_range = Range(.Cells(6, 20), .Cells(500, 20))
criteria_range1 = Range(.Cells(6, 7), .Cells(500, 7))
criteria_range2 = Range(.Cells(6, 5), .Cells(500, 5))
criteria_range3 = Range(.Cells(6, 13), .Cells(500, 13))
criteria_range4 = Range(.Cells(6, 6), .Cells(500, 6))
criteria_range5 = Range(.Cells(6, 23), .Cells(500, 23))
End With
sum1 = Application.WorksheetFunction.SumIfs( _
sum_range, _
criteria_range1, "ME1", _
criteria_range2, "Test Tool", _
criteria_range3, ArrME1(i), _
criteria_range4, """<>Actual tool/equipment change""", _
criteria_range5, """<>Cancelled""", _
criteria_range5, """<>Not Ordered""" _
)
答案 1 :(得分:0)
不知道你想要做什么,但sum1和sum2显然是字符串
因此,您的最后一行在活动单元格中存储一个公式,其中包含其他两个公式的串联:"=sum1string=sum2string"
如果两个公式都是相同的字符串,则返回的TRUE确实是正确的计算。
我建议你养成在每个程序的顶部添加OPTION EXPLICIT的习惯。这会迫使你对你的变量进行调整。例如,如果DIM sum1为单个,您将立即捕获您的错误。
您可以通过以下方式获得更好的结果:
sum2 = "+SUMIFS(...."
ActiveCell.FormulaR1C1 = sum1 & sum2
或者,您可以尝试使用sum1和sum2评估EVALUATE或[]:
ActiveCell.FormulaR1C1 = [sum1] + [sum2]