2017-10-12 99 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