Страницы: 1
RSS
Range.Find. Как максимально быстро найти значение в диапазоне, Сравнение поиска в массиве, методом и «в лоб» прямым перебором
 
Приветствую!

Решил проверить, какой способ из 3ёх (поиск в массиве, метод Range.Find и простой перебор) является оптимальным по соотношению скорость/удобство/универсальность
Скорость рассматривается в первую очередь, удобство - во вторую и универсальность - просто для случая "при прочих равных" (просто потому что можно написать код, который будет применять самый быстрый способ в зависимости от задачи, тем самым становясь универсальным)
Перед запуском теста ЗАПОЛНИТЕ таблицу, нажав на кнопку!
Код
Отчёт
Расширенное сравнение
Выводы
Изменено: Jack Famous - 07.05.2021 13:55:47
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Пока только можно точно сказать, что массив стабильно выигрывает у метода
не горячись. Все зависит от обстоятельств. Может быть ситуация, при которой Find Уже нашел, а в массив все еще с листа присваивается.
лист имеет с 1 по на весь столбец и вот что имеем
Код
Sub test()
t = Timer
Set a = Columns(1).Find(What:=10, LookIn:=xlValues)
Debug.Print Format(Timer - t, "0.0000")
t = Timer
Z = Columns(1)
Debug.Print Format(Timer - t, "0.0000")
End Sub

0,0039
0,1953
если искать 1000000 то
1,0078
0,1641
Изменено: БМВ - 06.05.2021 15:29:26
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ: Все зависит от обстоятельств. Может быть ситуация
формально да - НЕ всегда. Скажу больше: когда мне нужно найти на листе с большим количеством данных что-то, то я просто использую кнопку Найти и Заменить, потому что я даже в массив не смогу забрать больше 10млн ячеек (спасибо Excel x32)  :D  
Я же в этой теме имею ввиду про ситуацию "есть конкретный диапазон с данными и надо проверить, есть ли в нём определённое значение"
Готовлю стенд — сегодня будет  ;)
Изменено: Jack Famous - 06.05.2021 16:15:05
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Готовлю стенд
только приправляй нормальными пояснениями, а то будет как в прошлый раз с цветными диапазонами :-)
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ: как в прошлый раз
ну мы потом с Виталей всё нормально разобрали  :)
Код и скрин теста из файла выложил, а описание уже завтра — немного неожиданный результат  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Готово  :idea:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх