превосходит быстрый доступ к двумерному массиву, избегая цикла?

У меня есть много листов в моей книге, что я должен получить доступ к hundresds раз. Поэтому я преобразовываю их в массив, и я работаю с данными массива; намного быстрее.

Аспирация массива

dim myArray(1 to 1000, 1 to 2) 

если я ищу значение в столбце 2 в соответствии со столбцом 1, прямой прямой путь использует цикл

 for i=1 to 1000 if myArray(i,1)="XXX" then myValue=myArray(i,2) next i 

так как я знаю сотни раз, мне интересно, есть ли что-то вроде функции поиска для двухмерного массива или что-то вроде этого:

 myvalue=function(myarray(1)="XXX",myarray(2)) 

благодаря

хосе

Альтернативным подходом было бы сортировать данные в массиве с помощью QuickSort и использовать алгоритм поиска двоичного поиска. В зависимости от размера ваших массивов и количества раз, когда вы хотите выполнять поиск на массивах, это может быть быстрее. Или вы можете попробовать использовать словарь или коллекцию.

См. Мои сообщения в блогах для примеров и сравнений этих методов.

https://fastexcel.wordpress.com/2011/08/02/developing-faster-lookups-part-3-a-binary-search-udf/

https://fastexcel.wordpress.com/2011/10/26/match-vs-find-vs-variant-array-vba-performance-shootout/

https://fastexcel.wordpress.com/2012/07/10/comparing-two-lists-vba-udf-shootout-between-linear-search-binary-search-collection-and-dictionary/

вашему коду нужно « выйти для»,

 For i = 1 To 1000 If myArray(i, 1) = "XXX" Then myValue = myArray(i, 2) Exit For End If Next i 
  • excel match год и месяц в массиве
  • ошибка ошибки 424
  • возврат только не пустых результатов массива
  • Чтение 3-мерного массива из Excel (IBM ILOG CPLEX)
  • Подстрока вне диапазона VBA Excel
  • Формула массива из Google Таблиц в Excel INDEX MATCH MATCH
  • Возврат A2, когда D2 найден в массиве
  • Excel, укажите все даты со значением
  • Формат VBA Excel Percent в массиве
  • Заполнение массива VBA, по одной строке за раз
  • Как работает System.out.println () в java?
  • Давайте будем гением компьютера.