Excel Vlookup执行标准
如何根据特定的值修改vlookup的执行。我希望它仅在输出表(表2)单元格(Q2到AB2)包含“预测”时执行Vlookup,否则,如果在相对单元格中标记为“实际”,则跳过列 最后,我想将Q列中包含vlookup forumla的所有单元格复制并粘贴到AB。我相信这可以通过使用String函数来实现Excel Vlookup执行标准,excel,vba,Excel,Vba,如何根据特定的值修改vlookup的执行。我希望它仅在输出表(表2)单元格(Q2到AB2)包含“预测”时执行Vlookup,否则,如果在相对单元格中标记为“实际”,则跳过列 最后,我想将Q列中包含vlookup forumla的所有单元格复制并粘贴到AB。我相信这可以通过使用String函数来实现 Sub MakeFormulas() Dim SourceLastRow As Long Dim OutputLastRow As Long Dim sourceSheet As Worksheet
Sub MakeFormulas()
Dim SourceLastRow As Long
Dim OutputLastRow As Long
Dim sourceSheet As Worksheet
Dim outputSheet As Worksheet
Dim X As Long
'names of our worksheets
Set sourceSheet = Worksheets("Sheet1")
Set outputSheet = Worksheets("Sheet2")
'Determine last row of source
With sourceSheet
SourceLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
With outputSheet
'Determine last row in col C
OutputLastRow = .Cells(.Rows.Count, "C").End(xlUp).Row
For X = 2 To OutputLastRow
If InStr(1, .Range("C" & X), "PO Materials") + InStr(1, .Range("C" & X), "PO Labor") > 0 Then
'Apply formula
.Range("Q" & X & ":AB" & X).Formula = _
"=VLOOKUP($E" & X & ",'" & sourceSheet.Name & "'!$A$2:$L$" & SourceLastRow & ",Match(Q$1,'" & sourceSheet.Name & "'!$A$1:$AD$1,0),0)"
End If
Next
End With
End Sub
第2张截图
我只需要硬编码一点:
For Y = 17 To 28 'Q to AB
For X = 2 To OutputLastRow
If InStr(1, .Range("C" & X), "PO Materials") + InStr(1, .Range("C" & X), "PO Labor") > 0 And Cells(2, Y) = "Forecast" Then
'Apply formula
.Cells(X, Y).Formula = _ 'cell at row X, column Y
"=VLOOKUP($E" & X & ",'" & sourceSheet.Name & "'!$A$2:$L$" & SourceLastRow & ",Match(" & cells(1,Y).address & ",'" & sourceSheet.Name & "'!$A$1:$AD$1,0),0)"
End If
Next
Next
在应用公式之前,它会先分解检查每列中的第二个单元格,但现在匹配中的列Q保持不变,这会使Vlookup失效。Q是否可以是可变的,以便它与单元格相匹配?根据列上的月份进行Vlookup检查,我已编辑了答案,请检查这是否有效。谢谢,很好。我遇到的一个问题是,第X行的注释单元格导致了错误,因此我将其删除,并在运行中正常工作。现在我正在尝试创建一个方法,这样我就可以复制和粘贴执行vlookup的单元格,这样我就不会有太多的vlookup公式在后台运行。你的意思是只复制答案(值)?您可以查看“粘贴”与“粘贴特殊”