Vba 引用下一行进行评估和索引匹配

Vba 引用下一行进行评估和索引匹配,vba,excel,Vba,Excel,我有这个公式 Dim lastrow As Long lastrow = Sheets("Tab 1").Range("A" & Rows.Count).End(xlUp).Row With Range("AP2:AP" & lastrow) .Value = Evaluate("=IFERROR(INDEX('Usages'!A:G,MATCH(1,('Usages'!F:F=""No"")*('Usages'!C:C=N2)*('Usages'!D:D<=AO2)*

我有这个公式

Dim lastrow As Long
lastrow = Sheets("Tab 1").Range("A" & Rows.Count).End(xlUp).Row

With Range("AP2:AP" & lastrow)

.Value = Evaluate("=IFERROR(INDEX('Usages'!A:G,MATCH(1,('Usages'!F:F=""No"")*('Usages'!C:C=N2)*('Usages'!D:D<=AO2)*('Usages'!E:E>=AO2),0),2),""Not Found"")")

End With
Dim lastrow尽可能长
lastrow=工作表(“表1”)。范围(“A”和行数。计数)。结束(xlUp)。行
带范围(“AP2:AP”和lastrow)
.Value=Evaluate(“=IFERROR(索引('Usages'!A:G,匹配(1,('Usages'!F:F=”“No”“)*('Usages'!C:C=N2)*('Usages'!D:D=AO2),0),2),“未找到”))
以
如何使匹配函数引用下一行 e、 g.N2、N3、AO2、AO3 目前,我只从N2和AO2中获取整个列的参数值

此公式与用法单独放在一张纸中

非常感谢您的帮助

试试看

dim ulr as long, lastrow As Long

lastrow = Sheets("Tab 1").Range("A" & Rows.Count).End(xlUp).Row

with worksheets("Usages")
    ulr = .cells(.rows.count, "B").end(xlup).row
end with

With Worksheets("Tab 1").Range("AP2:AP" & lastrow)
    .Formula = "=IFERROR(INDEX('Usages'!B:B, AGGREGATE(15, 6, ROW($1:$" & ulr & ")/" & _
                   "(('Usages'!F$1:F$" & ulr & "=""No"")*('Usages'!C$1:C$" & ulr & "=N2)*('Usages'!D$1:D$" & ulr & "<=AO2)*('Usages'!E$1:E$" & ulr & ">=AO2)), 1)), ""Not Found"")"
    .Value = .Value
End With
dim ulr尽可能长,lastrow尽可能长
lastrow=工作表(“表1”)。范围(“A”和行数。计数)。结束(xlUp)。行
带工作表(“用法”)
ulr=.cells(.rows.count,“B”).end(xlup).row
以
带有工作表(“表1”)。范围(“AP2:AP”和lastrow)
.Formula=“=IFERROR(索引('Usages')!B:B,聚合(15,6行($1:$”&ulr&')/”)_
((‘Usages’!F$1:F$”&ulr&“=”No“)*(‘Usages’!C$1:C$”&ulr&“=N2)*(‘Usages’!D$1:D$”&ulr&“=AO2)),1)),“未找到”)
.Value=.Value
以

对不起,我不清楚这个问题。我想做的是改变N2-->N3..N4..N5('Usages'!C:C=N2),这个公式放在与Usages不同的表格中。我意识到这一点。如果没有父工作表引用,则公式将是activesheet上的数组公式。我需要引用用法,以将整列引用减少到已使用的范围。虽然我建议在Range(“AP2:AP”&lastrow)中添加一个父工作表,但该决定与公式放置无关。啊,我明白了,我已经遵循了您的建议。但是我仍然从N2和AO2中的参数中得到值。哦,是的。。。公式将作为数组公式块输入。我将试着想出一个非数组公式。我只是一个试图学习vba的学生。谢谢你的耐心和帮助。