У меня есть Sheet2 с данными (названиями продуктов) в алфавитном порядке отсортированы по столбцу с 26 столбцами плюс один столбец для числовых данных. На Sheet1 есть список из почти 10 000 наименований продуктов, которые должны быть проверены, есть ли у нас их на Sheet2 или нет. Чтобы искать одно имя одновременно, это вопрос увлеченности, поэтому я подумал, можем ли мы проводить массовые поисковые данные в Sheet1, а рядом с каждой ячейкой будет показан результат поиска с адресом ячейки, где этот продукт находится в Sheet2, или не найдено, такие как:Excel несколько строк поиск
SEARCH STRINGS SEARCH RESULT
Vodafone A4
Mirinda C105
Coca-Cola Y59
HeroHonda not found
Bournvita S27
Maggi not found
Я сделал некоторый поиск, чтобы найти подобный код для того, что нужно выше, и нашел следующий код: http://www.excelforum.com/excel-programming-vba-macros/714965-search.html, который делает поиск одной строки. Можно ли изменить этот сценарий, чтобы получить желаемые результаты?
Sub DataSearch()
Dim Data() As Variant
Dim DstWks As Worksheet
Dim Food As String
Dim N As Variant
Dim R As Long
Dim Rng As Range
Dim RngEnd As Range
Dim SrcWks As Worksheet
Set SrcWks = Worksheets("Test 2")
Set DstWks = Worksheets("Test1")
R = 6
Food = DstWks.Range("E3")
N = DstWks.Range("E4")
If DstWks.Range("C6") <> "" Then
DstWks.Range("C6").CurrentRegion.Offset(0, 1).ClearContents
End If
Set Rng = SrcWks.Range("A4:E4")
Set RngEnd = SrcWks.Cells(Rows.Count, Rng.Column).End(xlUp)
Set Rng = IIf(RngEnd.Row < Rng.Row, Rng, SrcWks.Range(Rng, RngEnd))
ReDim Data(1 To Rng.Rows.Count, 1 To Rng.Columns.Count)
Data = Rng.Value
For I = 1 To UBound(Data, 1)
If Data(I, 1) = N And InStr(1, Data(I, 3), Food, vbTextCompare) > 0 Then
DstWks.Cells(R, "C").Resize(1, Rng.Columns.Count) = Rng.Rows(I).Value
R = R + 1
End If
Next I
End Sub
Всегда признателен за вашу неоценимую помощь.
terry добро пожаловать в StackOverflow :) проверьте этот [post out.] (Http://stackoverflow.com/questions/14578474/copy-to-various-columns-based-on-cell-contents/14584298#14584298) Как упоминалось , итерации поиска через большие диапазоны данных могут привести к огромному снижению производительности. Вы можете включить * wildcard * метод и попробовать. Я поддерживаю массивы здесь. – bonCodigo