Страницы: 1
RSS
Поиск в массиве (VBA) без цикла.
 
задался вопросом можно ли как то искать в массиве без перебора каждого элемента?  
 
Sub pp()  
Dim arr(1 To 3, 1 To 2)  
Dim s  
arr(1, 1) = "первый"  
arr(2, 1) = "второй"  
arr(3, 1) = "третий"  
arr(1, 2) = "яблоко"  
arr(2, 2) = "вишня"  
arr(3, 2) = "черешня"  
s '= [поиск в массиве arr, по второму столбцу слова "вишня]
MsgBox s 'должно вывести "2"  
 
End Sub  
 
 
есть ли такой способ? что то типа Find  
 
Заранее спасибо.
 
и вдогонку. Как без цикла вставить на лист этот массив? что то видел про Join, но не разглядел, а сейчас разобраться не могу.    
 
Спасибо. Извините что в одном топике, но вопросы  вроде не сложные.
 
спасибо. Только мне надо было индекс строки элемента.  
 
ну вообщем не суть, раз нет специального способа, то мне и циклом удобнее)
 
не, пример безусловно интересный, на будущее пригодится. Он же не медленнее чем цикл?  
 
Может как нибудь можно так же и ПОИСКПОЗ прикрутить? или не стоит заморачиваться и использовать циклы?
 
Sub pp()  
Dim arr(2, 1), arr2()  
Dim s, z  
arr(0, 1) = "первый"  
arr(1, 1) = "второй"  
arr(2, 1) = "третий"  
arr(0, 0) = "яблоко"  
arr(1, 0) = "вишня"  
arr(2, 0) = "черешня"  
s = Application.VLookup("вишня", arr, 2, 0)  
arr2 = arr  
ReDim Preserve arr2(2, 0)  
z = WorksheetFunction.Match("вишня", arr2, 0)  
MsgBox z  
End Sub  
 
как то вот так может?  
 
Еще третий вопрос - как померить разницу в производительности между этими двумя способами? )
 
а не должно? вроде работает)  
 
судя по моим замерам оба метода работают одинаково быстро.
 
а кто-то считает, что find работает без перебора?
Живи и дай жить..
Страницы: 1
Читают тему
Наверх