Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Vlookup执行标准_Excel_Vba - Fatal编程技术网

Excel Vlookup执行标准

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

如何根据特定的值修改vlookup的执行。我希望它仅在输出表(表2)单元格(Q2到AB2)包含“预测”时执行Vlookup,否则,如果在相对单元格中标记为“实际”,则跳过列

最后,我想将Q列中包含vlookup forumla的所有单元格复制并粘贴到AB。我相信这可以通过使用String函数来实现

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公式在后台运行。你的意思是只复制答案(值)?您可以查看“粘贴”与“粘贴特殊”