JiaWei Lee Ответов: 1

Excel VBA для перекрестной проверки значения


У меня есть 2 листа.

Первый лист - это ввод необработанных данных

Второй лист - это список спецификаций

лист1
a  3  3  3  3  3
b  2  2  2  2  2 


лист2 (спец)
a(upper) 5  5  5  5  5
a(lower) 1  1  1  1  1
b(upper) 4  4  4  4  4
b(lower) 3  3  3  3  3


таким образом, он покажет проход и провал в sheet1
a  3  3  3  3  3  pass
b  2  2  2  2  2  fail


Что я уже пробовал:

If Trim(FindString) <> "" Then
    With Sheets("Sheet2").Range("A:A") 'searches all of column A
        Set Rng = .Find(What:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not Rng Is Nothing Then
            

        Else
            

        End If
    End With
End If

1 Ответов

Рейтинг:
1

CHill60

Ваша находка не сработает по двум причинам

1. After:=.Cells(.Cells.Count), - вы ищете материал после последней ячейки на листе

2. LookAt:=xlWhole, _ у вас нет ни одной ячейки на листе 2, которая полностью соответствовала бы значениям на листе 1, так что либо это должно быть xlPart или ваша строка Findstring должна иметь добавленные биты "(верхний)" и "(Нижний)"

Таким образом, вам нужно выполнить два поиска или предположить, что "(нижний)" диапазон находится сразу после "(верхнего)" диапазона, и просто выполнить поиск Cell.Value & "(upper)" тогда использовать rng.Offset(1,0) чтобы получить нижнюю полосу

Как только вы найдете свою "спецификацию", вам нужно будет сравнить значения в каждом из столбцов. Вы могли бы использовать rng.Offset(0,1), rng.Offset(0,2) и т.д. Но лучше было бы возвращать массивы со значениями спецификации в них например

Dim Arr As Variant
Arr = Range(rng.Address & ":"; rng.Offset(0, 5).Address).Value
Затем вы можете пройти через ячейки в строке, которую вы проверяете, и просто сравнить их со значениями в верхнем и Нижнем массивах


Maciej Los

5ed!