提问人:MonroeGA 提问时间:11/29/2022 最后编辑:braXMonroeGA 更新时间:11/29/2022 访问量:43
在匹配多个条件的范围内搜索行
Search for Row in Range Matching Multiple Criteria
问:
我正在尝试在 Excel VBA 中搜索与多个条件匹配的行。基本上,当我双击单元格时,我需要知道单击的值是否存在于另一个工作表中,但也满足两个附加条件。
我正在使用 Application.WorksheetFunction 方法,尝试实现此 Excel 公式:
=MATCH(1,INDEX((A1=rng2)*(B1=rng3)*(C1=rng4),0,1)
此公式适用于电子表格(直接在 Excel 中,而不是 VBA),返回正确的行号:
=MATCH(1,INDEX((TRIM("nasdbpha04")=$D$3:$D$2000)*("Local"=$P$3:$P$2000)*($AQ$1=$AQ$3:$AQ$2000),0,1),0)
当我尝试在 VBA 的 WorkSheet_BeforeDoubleClick 事件中实现相同的内容时,以下给出了运行时错误“13” - 类型不匹配。我的代码如下:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim row As Long
Dim dtMax As Date 'corresponds to $AQ$1 above (only put in $AQ$1 to test the formula)
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim rng4 As Range
Set rng2 = Sheets("DB2 Databases").Range("$d$3:$d$2000")
Set rng3 = Sheets("DB2 Databases").Range("$p$3:$p$2000")
Set rng4 = Sheets("DB2 Databases").Range("$aq$3:$aq$2000")
dtMax = Application.WorksheetFunction.Max(rng3)
row = Application.WorksheetFunction.Match(1, Application.WorksheetFunction.Index((Trim(Target.Value) = rng2) * ("Local" = rng3) * (dtMax = rng4), 0, 1), 0)
End Sub
将 Sub 中的变量与公式进行比较: Target.Value = “nasdbpha04” 和 dtMax = 电子表格中的 $AQ$1(但仅限于电子表格中用于测试目的)
我知道我可以交替编写一个函数来执行查找命令,然后检查该行是否满足其他两个条件,如果没有,则遍历直到找不到任何条件。但是,由于该公式在Excel中有效,因此我认为应该有一种方法可以使用WorksheetFunction在VBA中使其工作。
关于我应该纠正什么或采取不同做法的任何建议将不胜感激。
谢谢。
答: 暂无答案
评论
Me.Evaluate
WorksheetFunction.CountIfs