Здравствуйте,
Нужен удобный код массива, который быстро может извлечь данные из таблицы, аналог Индекс/Поискпоз.
С массивными кодами ранее не работал. Хотелось бы, получить такой код от профессионала.
Задача:
1) Чтобы, искал и извлекал данные по двум и более критериям
2) В одном коде выполнить поиск и подстановку для нескольких диапазонов.
Сейчас есть код, который ищет по одному условию, и я хотел сделать поиск по двум условиям, но не работает.
Вот код.
Вкратце, нужны примеры:
Как искать по одному условию.
Как искать по двум условиям
Как выполнить две задачи в одном макросе (вставил в столбец А, следующий код для столбца В)
И желательно с описаниями, чтобы я мог понять и применить в своих файлах.
И еще один момент. Код выше ищет и выводит последнее совпадение, если имеются дублирующиеся строки. Хотелось, бы чтобы выводил первый найденный результат.
Бюджет 500 руб.
С уважением.
Нужен удобный код массива, который быстро может извлечь данные из таблицы, аналог Индекс/Поискпоз.
С массивными кодами ранее не работал. Хотелось бы, получить такой код от профессионала.
Задача:
1) Чтобы, искал и извлекал данные по двум и более критериям
2) В одном коде выполнить поиск и подстановку для нескольких диапазонов.
Сейчас есть код, который ищет по одному условию, и я хотел сделать поиск по двум условиям, но не работает.
Вот код.
Код |
---|
Sub Test() FastBegin Dim S As Double S = Now Dim BinosozDB As Variant, BinoDB As Variant, Result As Variant, t As Variant, BinosozLR As String, BinoLR As String, i As Long, j As Long Dim sl: Set sl = CreateObject("Scripting.Dictionary") With Sheets("Database") BinosozLR = .Cells(.Rows.Count, "AH").End(xlUp).Row BinosozDB = .Range(.Cells(14, 2), .Cells(BinosozLR, 34)) End With With Sheets("BINO") BinoLR = .Cells(.Rows.Count, "C").End(xlUp).Row BinoDB = .Range(.Cells(14, 1), .Cells(BinoLR, 6)) Result = .Range(.Cells(14, 7), .Cells(BinoLR, 7)) For i = 14 To BinosozLR sl(BinosozDB(i, 1) & BinosozDB(i, 3)) = BinosozDB(i, 32) Next i For j = 14 To BinoLR t = BinoDB(j, 1) & Left(BinoDB(j, 3), 250) If sl.Exists(t) Then Result(j, 1) = sl(t) End If Next j .Range(.Cells(14, 7), .Cells(BinoLR, 7)) = Result End With FastEnd MSGBOX Now - S, 64 End Sub |
Как искать по одному условию.
Как искать по двум условиям
Как выполнить две задачи в одном макросе (вставил в столбец А, следующий код для столбца В)
И желательно с описаниями, чтобы я мог понять и применить в своих файлах.
И еще один момент. Код выше ищет и выводит последнее совпадение, если имеются дублирующиеся строки. Хотелось, бы чтобы выводил первый найденный результат.
Бюджет 500 руб.
С уважением.