我想基于C和E列中的两个条件查找行号。我的数据如下:
我已经搜索了问题,并使用Match
函数作为数组公式可以解决此问题(当我在Excel中使用它,而不是VBA时有效),但是我不知道如何将其制成数组VBA中的公式。使用“ []”或.Evaluate
的不同解决方案对我不起作用(尽管那可能是我的错误)。因此,我将如何修改此代码以获得所需的结果:
Sub Test1()
Dim rowDB As Long
Dim wsDB As Worksheet
Set wsDB = ActiveSheet
rowDB = WorksheetFunction.Match(CDate("30.06.2020") & "EX0500-0001", wsDB.Range("C7:C366") & wsDB.Range("E7:E366"))
End Sub
我得到的错误是“错误13:类型不匹配”,所以我不确定这里是否还有其他问题,或者只是缺少数组公式。
答案 0 :(得分:1)
我玩了一段时间,发现了几个问题:
似乎CDate()不喜欢“ 30.06.2020”作为输入并得到类型错误。似乎对“ 30-06-2020”感到满意,因此可以改用该格式,或者只是搜索字符串“ 30.06.2020”?只要所有日期格式都一致,就可以。
第二个参数WorksheetFunction.Match()必须是连续范围,而您的不是。另外,我认为!
表达式没有意义;如果要合并范围,请使用Union()函数。但这在这里不起作用,因为如上所述,范围不连续。
我认为无法使用WorksheetFunction.Match()搜索多个值,因此您可能必须分别在Coulmn C中搜索日期和E列中的字符串。
这是我为搜索一个值而工作的一些vba:
wsDB.Range("C7:C366") & wsDB.Range("E7:E366")
此外,如果未找到匹配项,则会收到“应用程序定义的错误或对象定义的错误”,因此您需要实施一些错误处理。