2017-07-27 289 views
0

我曾多次尝试在VBA中正确使用评估函数,但是我没有成功。我想要在数据表上运行多个条件匹配。我在这里提供了一个样本数据表来进行测试。我无法获得功能Evaluate(evalStr)传递匹配行。我反复收到一条错误消息。我在下面提供了一组样本代码,期望的结果是第7行,其中item1 =“Orange”和item2 =“Feb”。你能帮忙找出问题吗?Excel VBA:多个条件匹配 - 评估函数

enter image description here

Sub testEval() 

Dim dataTable As ListObject 
Dim evalStr As Variant 
Dim item1 As String 
Dim item2 As String 
Dim ws As Worksheet 

item1 = "Orange" 
item2 = "Feb" 

Set ws = ActiveSheet 
Set dataTable = ws.ListObjects(1) 

With ws 

    'V1 
    evalStr = .Evaluate("MATCH(" & item1 & "&" & item2 & "," & .Columns(1).Address & "&" & .Columns(2).Address & "),0)") 

    'V2? 
    'evalStr = .Evaluate("MATCH(" & item1 & "&" & item2 & "," & Application.WorksheetFunction.Substitute(.Columns(1).Address & "&" & .Columns(2).Address, "$", "") & "),0)" 

    'With dataTable.DataBodyRange 

     ''V3? 
     'evalStr = ws.Evaluate("MATCH(" & item1 & "&" & item2 & "," & .Columns(1).Address & "&" & .Columns(2).Address & "),0)") 

     ''V4? 
     'evalStr = ws.Evaluate("MATCH(" & item1 & "&" & item2 & "," & Application.WorksheetFunction.Substitute(.Columns(1).Address & "&" & .Columns(2).Address, "$", "") & "),0)") 

    'End With 

    End With 
End Sub 

回答

1

evalStr应该是:

evalStr = .Evaluate("=MATCH(""" & item1 & """&""" & item2 & """," & .Columns(1).Address & "&" & .Columns(2).Address & ",0)") 

=从公式,item1失踪,item2应该用双引号括起来,因此我添加""),0之前有额外的

+0

每一个这样的例子都没有在匹配前留下“=”号......我也尝试过逃避引号,只是不与=号相结合。你的回答是正确的。谢谢 – Citanaf

+1

@Citanaf请按照[旅游]中的描述标记答案。 – teylyn

+0

@teylyn我在等待最低限度的时间才能过期。谢谢 – Citanaf