Функция соответствия индекса: перебор нескольких критериев - PullRequest
0 голосов
/ 08 мая 2020

Извините за мой первоначальный пост, в котором я не предоставил подробного описания того, что я хочу сделать.

Я хочу получить значение ячейки, если она соответствует двум критериям. Один критерий - это ячейка исправления, а второй мне нужно перебрать.

Пример:

Cells(2,1) = A (соответствует «Name» и Criteria2 (Cells(1,6)) , для Cells(3,1) я хочу применить то же самое, но с Criteria2 (Cells(2,6)) и т. д.

Моя альтернатива - отфильтровать критерий диапазона 1 (что я уже сделал), а затем получить все доступные значения, но я Мне нужно применить один и тот же процесс для 3 разных наборов, и я чувствую, что могу найти лучший подход с помощью match / Index.

Ниже вы можете найти мой файл excel, код и результат.

enter image description here

Вот результат моего кода:

enter image description here

А вот и мой код:

Sub match_index()

Dim ws As Worksheet
Set ws = Worksheets("Sheet1")

Dim i As Long
i = 2

Dim criteria1 As String
criteria1 = ws.Cells(1, 4).Value
Dim criteria2 As String
criteria2 = ws.Cells(1, 6).Value

Dim criteria_range1 As Range
Set criteria_range1 = ws.Range(ws.Cells(2, 8), ws.Cells(14, 8))
Dim criteria_range2 As Range
Set criteria_range2 = ws.Range(ws.Cells(2, 9), ws.Cells(14, 9))


With Application
While i < 8
        ws.Cells(i, 1).Value = .Index(criteria_range2, _
        .Match(criteria1, criteria_range1, 0), _
        .Match(ws.Cells(i, 6).Value, criteria_range2, 0), 1)
        i = i + 1
Wend
End With

End Sub

1 Ответ

0 голосов
/ 08 мая 2020

Мне удалось найти решение. Я использовал оператор If с функцией Like:

x = 2
y = 1
For i = 2 To 14
    criteria2 = ws.Cells(y, 6).Value
    If criteria1 Like ws.Cells(i, 8).Value And criteria2 Like ws.Cells(i, 9).Value Then
        ws.Cells(x, 1).Value = ws.Cells(i, 9).Value
        y = y + 1
        x = x + 1
    End If
    Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...