如何在excel中为vlookup提供替代scheme

我创build了一个macros来自动创build报告。 在代码的一部分,我想要提供替代方法来查找其他值,如果找不到它们。 我无法使其正确运行。 它不会暗恋或说任何话,但我给它的最后一个select,它不执行它。 更详细地说,它不会用“C2”来查看值。 最后的替代scheme在下面提供

cell3.Formula = "=IF(ISERROR(VLOOKUP(A2&""P2"",MARM!A:G,7,0)),"""",IF(VLOOKUP(A2&""P2"",MARM!A:G,7,0)=0,"""",VLOOKUP(A2&""C2"",MARM!A:G,7,0)))" 

下面提供了使用vlookup完成的代码部分

 With Range("J2:J" & LastRow) .Formula = "=IF(ISERROR(VLOOKUP(A2&""B2"",MARM!A:G,7,0)),"""",IF(VLOOKUP(A2&""B2"",MARM!A:G,7,0)=0,"""",VLOOKUP(A2&""B2"",MARM!A:G,7,0)))" .Value = .Value End With Dim cell3 As Range For Each cell3 In Range("J2:J" & LastRow) If IsEmpty(cell3.Value) = True Then cell3.Formula = "=IF(ISERROR(VLOOKUP(A2&""P2"",MARM!A:G,7,0)),"""",IF(VLOOKUP(A2&""P2"",MARM!A:G,7,0)=0,"""",VLOOKUP(A2&""C2"",MARM!A:G,7,0)))" End If Next cell3 

这个公式应该工作(基于你的最后一个评论):

 IFERROR(VLOOKUP(A2&""B2"",MARM!A:G,7,0),IFERROR(VLOOKUP(A2&""P2"",MARM!A:G,7,0),IFERROR(VLOOKUP(A2&""C2"",MARM!A:G,7,0),""Not Found""))) 

我看到的问题是一个@Jeeped提到,它会将每行的单元格A2的查找。 可以通过将每个引用改为A2来进行调整

 ... (A" & cell3.Row & ""B2""... 

或者你可以捕获cell3.Row作为一个variables

 Dim myRow as Long myRow = cell3.Row ... (A" & myRow & ""B2""... 

首先我注意到cell3.Formula初始if-condition没有条件:

 "=If( ISERROR(VLOOKUP(A2&""P2"",MARM!A:G,7,0)), _ 'PROBLEM; you have values, are they <> something? """", _ 'True-function IF( _ 'False-function VLOOKUP(A2&""P2"",MARM!A:G,7,0)=0, _ 'Has legit condition """", _ 'True-function VLOOKUP(A2&""C2"",MARM!A:G,7,0) _ 'False-function ) _ )" 

我会build议保存一个步骤,而不是使用VBA插入公式,但要有VBA做math,类似于:

 cell3.Formula= Application.IfError( Application.VLookup( ... etc.