在表格Excel之间查找和粘贴值

时间:2014-07-24 13:46:06

标签: excel vba excel-vba

我在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

1 个答案:

答案 0 :(得分:0)

您可能可以使用一系列嵌套&#34; = IFERROR()&#34;和&#34; = VLOOKUP()&#34;功能。只需嵌套它们,以便在每次搜索失败时进入下一个搜索(或VLOOKUP)范围。