如何在VBA Excel中集体搜索范围内的两个值

时间:2019-04-22 20:22:29

标签: loops for-loop find range rows

该代码具有搜索顺序,其作用如下:

它获取ws.range A中的每个值,并在另一个名为wp.range A的工作表中查找。如果ws.range中的某个特定值x,例如在wp.range A中找不到A3,则工作表中的下一个搜索顺序“ ws”是要在整个范围B的工作表“ wp”中搜索的下一个范围B3(与值x相同的行)中的值y。如果不是,则认为范围C(工作表ws)中的下一个值是在C列的另一张wp中找到。

现在,如果未找到范围A以及范围B中的值,则不但将范围C中的值,而且将范围C和D中的值一起进行比较。但是代码:

<a class="logo" href="#">
  <img src="https://via.placeholder.com/600x600/fc0">
</a>

给我错误消息:“类型不兼容”

 Set foundValue = wp.Sheets("ABC").Range(Cells(ru, I + 1), 
 Cells(number_of_ru, I + 1)).Find(cell.Offset(0, I).Value) And
 wp.Sheets("ABC").Range(Cells(ru, I + 2), 
 Cells(number_of_ru, I + 2)).Find(cell.Offset(0, I + 1).Value)

1 个答案:

答案 0 :(得分:0)

 For Each cell In ws.Range("A" & r & ":A" & number_of_r)
 For I = 0 To 2 'Column Offset form A to C
 Set foundValue = wp.Sheets("ABC").Range(Cells(ru, I + 
 1), Cells(number_of_ru, I + 1)).Find(cell.Offset(0, I).Value)
If Not foundValue Is Nothing Then
wp.Sheets("ABC").Rows(foundValue.Row).Columns("E:AB").Copy
ws.Range("G" & cell.Row).PasteSpecial
GoTo nextCell
End If
Next I
 Set foundValue = wp.Sheets("ABC").Range(Cells(ru, I + 1), 
Cells(number_of_ru, I + 1)).Find(cell.Offset(0, I).Value) 
  If Not foundValue Is Nothing Then
 Set foundValue = wp.Sheets("ABC").Range(Cells(ru, I + 2), Cells(number_of_ru, I + 
2)).Find(cell.Offset(0, I + 2).Value)
If Not foundValue Is Nothing Then
    wp.Sheets("ABC").Rows(foundValue.Row).Columns("E:AB").Copy
    ws.Range("G" & cell.Row).PasteSpecial
    GoTo nextCell
   End If 
Else: MsgBox "Problem"
End If
nextCell:
Next cell

End sub