2013-12-13 2 views
0

У меня есть три столбца в моем файле Excel, которые в настоящее время являются автофильтрами. Мне было поручено настроить несколько фильтров. То, как я начинал, заключалось в том, чтобы создать «меню» выбора с помощью флажков ActiveX и присвоить свойству «Связанная ячейка» доступ к ячейке справа. Итак, если первый флажок установлен, ячейка BB30 говорит «TRUE».Excel 2010 Select Case с флажками ActiveX

Проблема начинается с того, что первый столбец содержит 16 элементов, второй столбец имеет 11 элементов, а третий столбец - 5. Как мой босс хочет, чтобы он работал, если они выбирают 2 варианта из столбца 1 и один элемент из столбца 2, он фильтрует данные (на отдельном листе) на эту информацию.

Пример данных:

Column A   Column B    Column C 
--------   --------    -------- 
aCol1    bCol1    cCol1 
aCol2    bCol2    cCol2 
aCol3    bCol3    cCol3 
aCol4    bCol4    cCol4 
aCol5    bCol5    cCol5 
aCol6    bCol6 
aCol7    bCol7 
aCol8    bCol8 
etc.    etc. 

Так что, если я выбираю aCol1, aCol2 и bCol3 - мы хотим, чтобы отфильтровать (ACOL1 = 'TRUE' OR ACOL2 = 'TRUE') AND BCOL3 = 'TRUE' чтобы затем отфильтровать данные.

Я сделал несколько поисков, и кажется, что использовать SELECT CASE - это путь, но это даст мне более 800 различных сценариев ... не говоря уже о том, что ничего из определенного столбца не выбрано (только aCol1 и bCol8 выбрано, например).

Есть ли лучший способ сделать это?

Если мне нужно написать отдельный оператор CASE для каждого сценария, будет ли Excel 2010 обрабатывать многие?

Наконец, как только я определил, что все было выбрано, как написать VBA так, чтобы он на самом деле это сделал?

ответ

0

Не записывайте блок выбора.

Что вы хотите сделать, это выполнить итерацию по каждому столбцу, и если значение равно true, добавьте автофильтр со связанным значением. Вы делаете это для каждого столбца и фильтруете, как вы хотите это сделать.

Как для этого, используя VBA, вы можете просто использовать диапазон и вызвать метод AutoFilter() со значением для фильтрации. Я предполагаю, что у вас есть минимальное знание VBA.

Range("A1:Dx").AutoFilter Field:=x, Value:=x 
Смежные вопросы