我在Excel 2010中有一个sub的一部分,它应该在一个工作表中搜索一个值,找到一个相应的值,然后将其粘贴到一个主工作表中。然后它对第二张纸做同样的事情。其中有两个。在第一个中,i = 6,如果它没有找到第10列中的第二个值(即10为空),则它从第11列开始。举一个例子,假设Master中的第一个值是Project 21它在第1组的表格中搜索21。如果找到它,它会在第10列找到一个值并将其粘贴到Master中,或者查找第11列。然后它会查看第2组的工作表。我是这样做的,因为我无法获得一个If语句来检查每个工作表(如果proj不在group1中检查group2)。第二个做同样的事情,但只有一列。
它不起作用,并没有丢失任何错误,我不完全确定从哪里开始,因为我对Excel中的VBA并不过分熟悉。任何帮助或建议可能更好的方式来做到这一点将不胜感激。
For i = 6 To 6
PROJ = Worksheets("RESULTS").Cells(Row, StartColumn + 1).Value
Set Found = Sheets("GROUP1").Columns(1).Find(what:=PROJ, LookIn:=xlValues, lookat:=xlWhole)
If Not Found Is Nothing Then
PROJRow = Found.Row
End If
If Sheets("GROUP1") <> "" Then
Sheets("RESULTS").Cells(Row, StartColumn + i) = Sheets("GROUP1").Cells(PROJRow, 10)
Else
Sheets("RESULTS").Cells(Row, StartColumn + i) = Sheets("GROUP1").Cells(PROJRow, 11)
End If
Set Found = Sheets("GROUP2").Columns(1).Find(what:=PROJ, LookIn:=xlValues, lookat:=xlWhole)
If Not Found Is Nothing Then
PROJRow = Found.Row
End If
If Sheets("GROUP2") <> "" Then
Sheets("RESULTS").Cells(Row, StartColumn + i) = Sheets("GROUP2").Cells(PROJRow, 10)
Else
Sheets("RESULTS").Cells(Row, StartColumn + i) = Sheets("GROUP2").Cells(PROJRow, 11)
End If
Next
For i = 7 To 7
PROJ = Worksheets("RESULTS").Cells(Row, StartColumn + 1).Value
Set Found = Sheets("GROUP1").Columns(1).Find(what:=PROJ, LookIn:=xlValues, lookat:=xlWhole)
If Not Found Is Nothing Then
PROJRow = Found.Row
End If
Sheets("RESULTS").Cells(Row, StartColumn + i) = Sheets("GROUP1").Cells(PROJRow, 17)
Set Found = Sheets("GROUP2").Columns(1).Find(what:=PROJ, LookIn:=xlValues, lookat:=xlWhole)
If Not Found Is Nothing Then
PROJRow = Found.Row
End If
Sheets("RESULTS").Cells(Row, StartColumn + i) = Sheets("Group2").Cells(PROJRow, 17)
Next
答案 0 :(得分:0)
您可能可以使用一系列嵌套&#34; = IFERROR()&#34;和&#34; = VLOOKUP()&#34;功能。只需嵌套它们,以便在每次搜索失败时进入下一个搜索(或VLOOKUP)范围。