Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在IF语句中使用VLookup_Excel_Vba - Fatal编程技术网

Excel 在IF语句中使用VLookup

Excel 在IF语句中使用VLookup,excel,vba,Excel,Vba,作为一个新手,我真的被这件事缠住了,我希望任何人都能提供帮助 我试图在IF语句中使用VLookup,但由于VLookup返回否定结果的#N/A,IF语句无法识别这一点,因此会出错,而不是继续 Public Const ParametersAssembly = "TabDocumentPath|strFrameworkPath|FrameworkFullPath|FrameworkAllFile|AssembliesPath|FrameworkTabs|SaveAsExtension|CopyTa

作为一个新手,我真的被这件事缠住了,我希望任何人都能提供帮助

我试图在IF语句中使用VLookup,但由于VLookup返回否定结果的#N/A,IF语句无法识别这一点,因此会出错,而不是继续

Public Const ParametersAssembly = "TabDocumentPath|strFrameworkPath|FrameworkFullPath|FrameworkAllFile|AssembliesPath|FrameworkTabs|SaveAsExtension|CopyTabsBefore"
Public Const ElementSeparator = "|"

vList = Split(ParameterList, ElementSeparator, -1, vbTextCompare)

For Each vParameter In vList
    If Application.WorksheetFunction.VLookup(vParameter, Worksheets("Configuration").Range("A:E"), 1, False) <> vParameter Then        
       MsgBox vParameter " does not exist in range"       
    End If
Next vParameter
Public Const参数assembly=“TabDocumentPath | strFrameworkPath | FrameworkFullPath | FrameworkAllFile | AssembliesPath | FrameworkTabs | SaveAsExtension | copytabsbfore”
公共常量元素分隔符=“|”
vList=Split(参数列表,元素分隔符,-1,vbTextCompare)
对于vList中的每个VP参数
如果Application.WorksheetFunction.VLookup(vParameter,工作表(“配置”).Range(“A:E”),1,False)vParameter,则
MsgBox vParameter“范围内不存在”
如果结束
下一个参数
我目前正在搜索范围a:E中的第一列。这可能就足够了。是否可以在没有单独的VLookup的情况下检查A:E范围内的每一列

再次表示,非常感谢您在这方面的任何帮助


谢谢

如果您计划评估结果,请不要使用工作表功能。使用Application.Vlookup返回到变量,并在检查值之前使用IsError进行测试

这只是测试应用程序是否存在。匹配将更有效,您只需在不存在匹配时进行测试

' ...
For Each vParameter In vList
    If IsError(Application.Match(vParameter, Worksheets("Configuration").Range("A:A"), 0)) Then        
       MsgBox vParameter " does not exist in range"       
    End If
Next vParameter
' ...

如果您计划评估结果,请不要使用工作表功能。使用Application.Vlookup返回到变量,并在检查值之前使用IsError进行测试

这只是测试应用程序是否存在。匹配将更有效,您只需在不存在匹配时进行测试

' ...
For Each vParameter In vList
    If IsError(Application.Match(vParameter, Worksheets("Configuration").Range("A:A"), 0)) Then        
       MsgBox vParameter " does not exist in range"       
    End If
Next vParameter
' ...

这里有一种方法,使用Find。如果需要的话,您可以循环浏览各个列,但不知道要实现什么,也不确定什么有用

Sub x()

Dim r As Range, vList

Public Const ParametersAssembly = "TabDocumentPath|strFrameworkPath|FrameworkFullPath|FrameworkAllFile|AssembliesPath|FrameworkTabs|SaveAsExtension|CopyTabsBefore"
Public Const ElementSeparator = "|"

vList = Split(ParameterList, ElementSeparator, -1, vbTextCompare)

For Each vParameter In vList
    Set r = Worksheets("Configuration").Range("A:E").Find(What:=vParameter, LookAt:=xlWhole, _
                          MatchCase:=False, SearchFormat:=False)
    If r Is Nothing Then
       MsgBox vParameter & " does not exist in range"
    End If
Next vParameter

End Sub

这里有一种方法,使用Find。如果需要的话,您可以循环浏览各个列,但不知道要实现什么,也不确定什么有用

Sub x()

Dim r As Range, vList

Public Const ParametersAssembly = "TabDocumentPath|strFrameworkPath|FrameworkFullPath|FrameworkAllFile|AssembliesPath|FrameworkTabs|SaveAsExtension|CopyTabsBefore"
Public Const ElementSeparator = "|"

vList = Split(ParameterList, ElementSeparator, -1, vbTextCompare)

For Each vParameter In vList
    Set r = Worksheets("Configuration").Range("A:E").Find(What:=vParameter, LookAt:=xlWhole, _
                          MatchCase:=False, SearchFormat:=False)
    If r Is Nothing Then
       MsgBox vParameter & " does not exist in range"
    End If
Next vParameter

End Sub

你的意思是想看看文本是在每一列中找到还是在任何一列中找到?在您当前的代码中,您应该使用IsError检查是否找到了值,并避免NA问题。此外,如果您只是想测试是否存在,请使用MATCH或VBA Find方法。理想情况下,我希望查看文本是否位于A:E列中。如果有帮助。。。该列有一个名为“Parameter”的常量标题。但首先,我是jst,它试图至少让第一列(A)工作。你的意思是想看看文本是否在每一列或任何一列中找到?在您当前的代码中,您应该使用IsError检查是否找到了值,并避免NA问题。此外,如果您只是想测试是否存在,请使用MATCH或VBA Find方法。理想情况下,我希望查看文本是否位于A:E列中。如果有帮助。。。该列有一个名为“Parameter”的常量标题。但首先,我是jst,我试图至少让它在第一列(A)中工作。