У меня есть кнопка на пользовательской форме, которая будет сопоставлять строки из двух текстовых полей с данными в определенных столбцах на листе «База данных», если совпадение будет найдено, она копирует строку на другой лист.
Код работает и сопоставляет данные с листа, когда сопоставленные данные являются «первыми» в базе данных.Это означает, что данные о совпадении могут находиться в строках 1, 2, 3, 10, но до тех пор, пока НЕТ данных существует, прежде чем совпадение сработает.
Проблема: разрывы соответствия, когда данные существуют в строках выше соответствующих критериев.Я получаю ответное возвращение False, когда оно должно быть True.Когда я перемещаю данные в «первые» данные, они работают.
Снимки экрана, которые помогут проиллюстрировать:
Критерии соответствия 
- Работы - 
Возвращает True для местных жителей 
- Перерывы -
Ошибка совпадения
Возвращает Falseв Locals 
Я использую массив, который выстраивает индексы по столбцам, которые я ищу, поэтому мне не нужно сортировать данные.Но я попытался разобраться, и возникла та же проблема.Я также удостоверился, что все ячейки в диапазоне, который я ищу, имеют формат "Общий", на всякий случай.Я не "вижу", что еще это может быть?Любая помощь будет принята с благодарностью.
Private Sub run_check_but_Click()
Const COL_STATUS As Long = 4
Dim wsData As Worksheet, wsSyn As Worksheet
Dim tRow As Long, i As Long
Dim tempList(1 To 9) As String
Dim match As Boolean
Dim rCol As Range, c As Range
Set wsData = Sheets("Database")
Set rCol = wsData.Range(wsData.Cells(3, 4), wsData.Cells(100, 4))
'Set TargetSheet and clear the previous contents
Set wsSyn = Sheets("Syn_Calc")
wsSyn.Range("A3:G" & wsSyn.Range("A" & Rows.count).End(xlUp).row + 1).ClearContents
tRow = 3
'Set an array of strings, based on the index matching the column to search for each
tempList(5) = curbase_box.Text 'Column "E" (5)
tempList(6) = dirquote_box.Text 'Column "F" (6)
For Each c In rCol.Cells
With c.EntireRow
If .Cells(COL_STATUS).Value = "Open" Then
match = False
For i = LBound(tempList) To UBound(tempList)
If tempList(i) <> "" Then
match = (.Cells(i).Text = tempList(i))
If Not match Then Exit For
End If
Next i
If match Then
'copy values from E-K
wsSyn.Cells(tRow, 1).Resize(1, 7).Value = _
.Cells(5).Resize(1, 7).Value
tRow = tRow + 1
End If
End If 'open
End With
Next c
End Sub
Ожидаемые результаты: Когда я нажимаю на командную кнопку, она выполняет поиск по столбцам для сопоставления строк в текстовых полях, независимо от того, где находятся данные в столбцах, и копирует строку соответствия на другой лист.
Примечание. Код будет искать совпадение только в том случае, если 4-й столбец («D») имеет статус «Открыть», как вы видели в коде.Я подтвердил, что это прекрасно работает.