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
Excel 2010 VBA匹配函数未找到匹配项_Excel_Vba_Match - Fatal编程技术网

Excel 2010 VBA匹配函数未找到匹配项

Excel 2010 VBA匹配函数未找到匹配项,excel,vba,match,Excel,Vba,Match,在Excel 2010中,我下面的匹配语句不起作用。函数应返回由datasetId标识的数据集的行号(该行号应是唯一的),如果datasetId不存在,则返回0。无论datasetId是否出现在第一列中,该函数始终转到第二个分支并返回0 Function findDataset(dataWorksheet As Worksheet, datasetId As String) As Integer If Not VBA.IsError(Application.Match(datasetId

在Excel 2010中,我下面的匹配语句不起作用。函数应返回由datasetId标识的数据集的行号(该行号应是唯一的),如果datasetId不存在,则返回0。无论datasetId是否出现在第一列中,该函数始终转到第二个分支并返回0

Function findDataset(dataWorksheet As Worksheet, datasetId As String) As Integer
    If Not VBA.IsError(Application.Match(datasetId, dataWorksheet.Columns(1), 0)) Then
        findDataset = Application.Match(datasetId, dataWorksheet.Columns(1), 0)
    Else
        findDataset = 0
    End If
End Function

您的功能没有根本问题:

Function findDataset(dataWorksheet As Worksheet, datasetId As String) As Integer
    If Not VBA.IsError(Application.Match(datasetId, dataWorksheet.Columns(1), 0)) Then
        findDataset = Application.Match(datasetId, dataWorksheet.Columns(1), 0)
    Else
        findDataset = 0
    End If
End Function

Sub MAIN()
    Dim ws As Worksheet
    Dim id As String, n As Integer
    Set ws = Sheets("Sheet1")
    id = "XX"
    n = findDataset(ws, id)
    MsgBox n
End Sub

适用于我…………可能您的匹配不准确。

您是在VBA子单元或工作表单元格中使用该函数?匹配函数返回的错误值是多少?我在子单元中使用它。错误代码是13(类型不匹配)匹配应该是精确的,因为即使我在获得相同的结果Sub MAIN()Dim ws As Worksheet Dim id As String,n As Integer,lastRow As Integer Set ws=Sheets(“Sheet1”)id=“XX”lastRow=dataWorksheet.Range(“A”&dataWorksheet.Rows.Count)。End(xlUp).Row datasheet.Cells(lastRow+1,1).Value=id n=findDataset(ws,id)MsgBox n End Sub