如何在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.