Работа с объектом ListBox. Сортировка и фильтрация данных

И снова здравствуйте.

Поставил для себя задучу разобраться и ответить на насущные вопросы по работе с элементом ListBox.

Есть данный объект, в который программно заносятся данные в 2 и более столбцов (у меня до 7-и). Данные берутся с таблицы(объекта листа) через .AddItem в цикле от 1 до "Количество строк в таблице" (Rows.Count) . Всё отрабатывает корректно.

Далее создана динамическая форма которая содержит ниименование заголовков таблицы, и ,определив тип данных столбцов, выводит Text и Combo боксы по заданным критериям. Тут тоже всё хорошо.

В этой форме хочу задавать параметры отбора создаваемого фильтра для данных в ListBox, причём задаются дополнительные признаки "как искать?" =, <, > для текстовых полей "Полное соответствие", "Содержит", "Не содержит"

Далее продумываю несколько вариантов осуществления запланированной задачи...:

1. Можно по данным установленых значений своего фильтра, отфильтровать исходную таблицу на листе Excel используя его фильтры или автофильтры. Однако тут необходимо каждую строку проверять на свойство видимости, и если Да, тогда отправлять строку в лист бокс.

2. Можно добавить вспомогательную колонку в таблице с формулой на проверку соответствия данных заданным критериям, и загружать в ListBox строки по признаку вспомогательной колонки, к примеру по положительному результату формулы "+".

3. Можно пункт 2 реализовать программно, но тут есть ограничения на вложения вункции If..then

4. И наверно самый простой, а значит наиболее "Mb-занимающий" и "книгозасоряющий" по моему мнению вариант - выводить данные таблицы в сводную таблицу на текущем или отдельном листе, на сводную таблицу устанавливать заданные фильтры, и просто брать результат сводной таблицы в листбокс.

Косательно сортировки данных, к примеру по алфавиту также можно использовать фильтры и автофильтры Excel. Однако в таком случае в таблице должна быть колонка с номером по порядку, для того чтобы при снятии фильтров и сортировки, элементы данных можно было вернуть на свои места, отсортировав таблицу по этой колонке.

Интересует Ваше мнение по поводу правильности предложенных ввариантов симбиоза VBA и Excel в рамках обозначенной задачи. Уверен что далеко не все варианты решения этого вопроса мне известны, но хотелось бы воспользоваться наиболее изящным способом. Вот тут и прошу Вашей консультации..