У меня есть проект, в котором я хочу отфильтровать много данных на основе выбора пользователя из 8 различных критериев.В моем случае это кухонные шкафы, но более универсальным примером будут автомобили.Пользователю предоставляется форма пользователя, содержащая 8 списков, по одному для Марка, Модель, Упаковка, Цвет, Передача и так далее.Двойной щелчок по элементу списка удаляет все остальные варианты в этом списке и отфильтровывает недействительные варианты из всех других списков.Варианты выбора составляются так, чтобы пользователь мог выбрать «Зеленый» для Цвета и «Форд» для Марки.
Я уже сделал это двумя разными способами, и я тоже не доволен.
1) Я создал матрицу, в которой я перечислил Модели внизу слева, а остальные 7 элементов вверху отмечены знаком «X» в точках пересечения.Затем я научил VBA читать его, как человек, используя тонну вложенных циклов.Это было довольно медленно, когда каждый выбор заставлял программу останавливаться на 1-2 минуты, пока она все разбирала.
2) Я перечислил все возможные комбинации (около 22 000) и использовал встроенные в Excel параметры фильтрации.чтобы отфильтровать данные, затем скопируйте каждый столбец результатов на второй лист, отфильтровав дубликаты и повторно отсортировав их, и используя его для повторного заполнения списков.Это сработало очень хорошо, но по какой-то причине я не могу понять, Excel зависает на 3-10 минут, делая что-то, когда я фильтрую определенные столбцы.Я отлаживаю / отслеживаю его, и зависание происходит после запуска всего моего кода, но до того, как он вернет управление пользователю.
На данный момент я открыт для любых предложений.В конечном итоге мне нужно, чтобы пользователь выбрал одну полную (все 8 вариантов сузились до одного выбора) конфигурации.Сложность заключается в том, что пользователь может начать с цвета «Зеленый», который исключит все другие цвета из списка «Цвет», а также любую марку, модель, упаковку и т. Д., Которые не входят в зеленый цвет из соответствующих им.списки.Может быть, данные помогут объяснить это?
Make Model Package Color Transmission
Ford Focus LT Blue Manual
Ford Focus LT Green Manual
...
Ford Focus ST Blue Manual
...
Ford Focus LT Blue Automatic
...
And so on for 22,000 rows.
Так что, если пользователь выбирает «Ручной», мне нужно удалить «Автоматические» строки.Если пользователь затем выбирает «ST», мне нужно удалить строки «LT» (при условии, что автоматические строки все еще отфильтровываются, и так далее, пока не останется только одна строка.