2017-10-12 143 views
-2

我在评估函数时出现错误。excel vba countifs评估

此代码在测试表上运行,所以我知道它应该给我“1”作为答案,但我无法让它运行。

这里是代码;

Check1 = Worksheets(Persona).Range("A3:A" & LastRowE3 & "") 
Check2 = Worksheets(Persona).Range("J3:J" & LastRowE3 & "") 
Ur_Val = "Production_End" 


y = Application.Evaluate("=COUNTIFS(" & Check1 & ", " & xu_value & ", " & Check2 & ", " & Ur_Val & ")") 

我知道“y”应该等于“1”,但我无法得到正确答案。

+0

是什么'xu_value'设置为? – tigeravatar

+0

检查你的变量类型。在您的EVALUATE语句中,您使用的是&运算符,它表明您希望使用字符串,但由于您未将它们用引号引起来,因此VBE将默认为可能会导致问题的Variant。 Option Explicit是你的朋友。 – SgtStens

+0

在这里粘贴你的完整代码,否则我们不知道什么是未知数。 –

回答

1

首先声明变量:

Dim Check1 as String,Check2 as String,Ur_Val as String,xu_value as String

然后

你想要的范围不只是范围值的地址:

Check1 = Worksheets(Persona).Range("A3:A" & LastRowE3 & "").Address(1,1,,1) Check2 = Worksheets(Persona).Range("J3:J" & LastRowE3 & "").Address(1,1,,1)

和琴弦Ur_Valxu_value需要在"最终的公式中surronded所以我们需要将它们添加:

, """ & xu_value & """,

所以:

Dim Check1 as String,Check2 as String,Ur_Val as String,xu_value as String 
Dim y as Long 
Check1 = Worksheets(Persona).Range("A3:A" & LastRowE3 & "").Address(1,1) 
Check2 = Worksheets(Persona).Range("J3:J" & LastRowE3 & "").Address(1,1) 
Ur_Val = "Production_End" 
xu_value = "SOMETHING_ELSE" 


y = Application.Evaluate("=COUNTIFS(" & Check1 & ", """ & xu_value & """, " & Check2 & ", """ & Ur_Val & """)") 
+0

非常感谢。我从来没有使用vba评估这样的长公式。我会记住你的建议。这很好。 – Bildircin13