как искать два значения в диапазоне в VBA Excel - PullRequest
0 голосов
/ 22 апреля 2019

Код получил порядок поиска и выполняет следующие действия:

Он принимает каждое значение в ws.range A и ищет его на другом листе с именем wp.range A. Если определенное значениеx в ws.range, например, A3 не найден в wp.range A, следующий порядок поиска на листе "ws" - это значение y в следующем диапазоне B3 (та же строка, что и значение x), которое нужно найти на листе "wp" ввесь диапазон B. Если нет, то считается, что следующее значение в диапазоне C (лист ws) находится на другом листе wp в столбце C.

Теперь, если значения в диапазоне A и затем в диапазоне Bне найдено, то значения не только в диапазоне C, но и в диапазоне C и D вместе взяты для сравнения.Но код:

 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)

выдает мне сообщение об ошибке: "несовместимый тип"

Dim cell As Range
r = 2
number_of_r = 30
ru = 1
number_of_ru = 30


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) And 
    wp.Sheets("ABC").Range(Cells(ru, I + 2), Cells(number_of_ru, I + 
    2)).Find(cell.Offset(0, I + 1).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
    Else: MsgBox "Problem"
    End If
nextCell:
Next cell

End sub

1 Ответ

0 голосов
/ 24 апреля 2019
 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
...