首页 > 解决方案 > 查找 - 类型不匹配

问题描述

lookup我在 vba 中找不到我的函数的正确类型。

我的 Excel 公式如下,工作正常。

=IF(INDIRECT("'Enclosure4-Workflow_Structure'!C"&MATCH('Enclosure2-Accesses'!A8; 
    'Enclosure4-Workflow_Structure'!A:A; 0))="Create"; 
    IF(LOOKUP(2; 1/('Enclosure5-Workflow_Steps'!A:A=INDIRECT("'Enclosure4-Workflow_Structure'!D"
    &MATCH('Enclosure2-Accesses'!A8; 'Enclosure4-Workflow_Structure'!A:A; 0))); 
    'Enclosure5-Workflow_Steps'!D:D) = "Task"; 'Enclosure2-Accesses'!B8; FALSE); FALSE)

第一个 if 子句对我来说很好,但第二个 if 子句包含该lookup函数。应该提供此查找功能"Task",因此我认为我应该设置DIM as String但我不断收到错误消息:“类型不匹配”。

引发错误的行应该获得最后一次出现的值。此值应对应于 D 列中的“任务”。

lOccurence = WorksheetFunction.Lookup(2, 1 / (Enc5.Range("A:A") = Enc4.Cells(MatchCrt, "D").Value), Enc5.Range("D:D"))

我很好奇为什么上面的行会导致错误。在 Excel 中,该行没有问题。是行不正确还是 DIM 类型(字符串)不正确?

我的 VBA 代码是:

Public Sub CopyUserAR2Data()

Dim Enc2 As Worksheet
Dim Enc4 As Worksheet
Dim Enc5 As Worksheet
Dim Enc9 As Worksheet
Dim MatchCrt As Double
Dim lOccurence As String


Set Enc2 = Sheets("Enclosure2-Accesses")
Set Enc4 = Sheets("Enclosure4-Workflow_Structure")
Set Enc5 = Sheets("Enclosure5-Workflow_Steps")
Set Enc9 = Sheets("Enclosure9-Dependency")

MatchCrt = WorksheetFunction.Match(Enc2.Cells(9, "A"), Enc4.Range("A:A"), 0)

lOccurence = WorksheetFunction.Lookup(2, 1 / (Enc5.Range("A:A") = Enc4.Cells(MatchCrt, "D").Value), Enc5.Range("D:D"))


If Enc4.Cells(MatchCrt, "C") = "Create" Then

    Enc9.Cells(2, 1).Value = lOccurence

End If

End Sub

标签: excelvbalookup

解决方案


我在评论部分接受了 Rory 的建议,并在数组中循环。

If sheet1.Cells(FirstCondition, "C") = "Create" Then    
For d = 1 To numberOfRows
    If (sheet1.Cells(FirstCondition, "D").Value = sheet2.Cells(d, "A").Value And sheet2.Cells(d, "D").Value = "Task") Then
         {"Cell values are entered"}
    End If
Next d
End If

这现在按预期工作。

@Rory,非常感谢您的耐心和帮助!


推荐阅读