Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/19: Рейтинг темы: голосов - 19, средняя оценка - 5.00
NeoKamI
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 10
1

Фильтрация на листе Excel

10.11.2011, 11:35. Просмотров 3703. Ответов 17
Метки нет (Все метки)

Доброго времени суток всем!

Надеюсь, кто-нибудь сможет мне подсказать.
Передо мной стоит рабочая задачка: есть таблица, в которой помимо всего прочего указано поле "Локация", то есть для одной позиции может указываться несколько городов. Нужно добиться того, чтобы можно было отфильтровать таблицу по любому городу.
Задача была бы до безобразия проста, если бы в каждой ячейке был один город. Но.. их может быть до 7-10
Заранее спасибо!
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2011, 11:35
Ответы с готовыми решениями:

Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа Excel
Всем привет! Хочу поделится наработками, которые получились в процессе реализации своих задач. ...

изображения в листе excel
подскажите, пожалуйста, как "выделить" вставленные в лист excel растровые изображения? (или что ещё...

Поиск таблиц на листе Excel
Друзья, кто-нибудь задавался вопросом поиска таблиц на листе Excel? Под таблицами я подразумеваю...

Отфильтрованный список на листе Excel
Kak mojno na Listbox-e v Excel pokazatj otfiljtrovannyj spisok SPASIBO

Построить спираль на листе Excel
Задание: построить спираль на листе Excel, используя автофигуры. Подскажите по следующим...

17
Казанский
14906 / 6308 / 1720
Регистрация: 24.09.2011
Сообщений: 9,977
10.11.2011, 12:06 2
В условии автофильтра укажите "содержит" или вводите со звездочками, например
равно *Москва* выберет все строки, где в этом поле содержится слово "Москва".

Если не получится, давайте пример.
1
NeoKamI
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 10
10.11.2011, 12:37  [ТС] 3
Казанский, о, благодарю! условие работает, я уже наполовину спасена - так фильтрация в полной мере реализует то, что нужно.

Вот если немного покапризничать: нет ли способа упростить доступ к условию? Сейчас путь выглядит как Text Filters - Contains - забиваем условие и радуемся сортировке.
В теории идеал это аналог обычного фильтра, когда в выпадающем списке видны все варианты.
Я с VBA малость знакома, но тут я пас.
0
Казанский
14906 / 6308 / 1720
Регистрация: 24.09.2011
Сообщений: 9,977
10.11.2011, 15:07 4
Можно, но только с примером
0
10.11.2011, 15:07
NeoKamI
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 10
10.11.2011, 15:53  [ТС] 5
Казанский, пример аттачу
как видно, все остальные колонки прекрасно себя чувствуют с традиционным фильтром, и вот только локация выбилась.
благодарствую за помощь!
0
Вложения
Тип файла: xls пробы сортировки.xls (22.5 Кб, 41 просмотров)
R Dmitry
406 / 75 / 6
Регистрация: 31.01.2011
Сообщений: 111
Записей в блоге: 1
10.11.2011, 17:11 6
как то так

Да забыл, что при загрузке файла нет события Worksheet_Activate
поэтому что бы заполнился список , активируйте другой лист, а затем вернитесь назад
1
Вложения
Тип файла: xls Копия пробы сортировки.xls (46.5 Кб, 23 просмотров)
R Dmitry
406 / 75 / 6
Регистрация: 31.01.2011
Сообщений: 111
Записей в блоге: 1
10.11.2011, 17:51 7
вместо события Worksheet_Activate
лучше используйте вот это:
Visual Basic
1
2
3
Private Sub ComboBox1_GotFocus()
ComboBox1.List = GetUnicSplit(Range("d2:d" & Cells(Rows.Count, 4).End(xlUp).Row), ",")
End Sub
в общем перезалил файл.
1
Вложения
Тип файла: xls Копия пробы сортировки.xls (46.5 Кб, 54 просмотров)
NeoKamI
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 10
10.11.2011, 22:33  [ТС] 8
R Dmitry, мое огромное СПАСИБИЩЕ!
сижу постигаю действительно то, что нужно!
отредактила на живой таблице, все получилось
0
Казанский
14906 / 6308 / 1720
Регистрация: 24.09.2011
Сообщений: 9,977
10.11.2011, 23:02 9
А сортировку списка не надо добавить?
0
NeoKamI
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 10
11.11.2011, 09:02  [ТС] 10
Казанский, а я вот как раз сижу думаю о том, что можно сделать для еще большей юзабельности. Поступило тут предложение упорядочить выпадающий список по алфавиту (а не в порядке появления)
0
mc-black
2769 / 703 / 104
Регистрация: 04.02.2011
Сообщений: 1,432
11.11.2011, 09:49 11
Вот, как-то так будет с сортировкой. Сортировал готовый массив пузырьком. Казанскому респект и уважуха за то, что завернул пример со словарем!
1
Вложения
Тип файла: xls Копия пробы сортировки.xls (48.0 Кб, 71 просмотров)
R Dmitry
406 / 75 / 6
Регистрация: 31.01.2011
Сообщений: 111
Записей в блоге: 1
11.11.2011, 11:17 12
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от mc-black Посмотреть сообщение
Вот, как-то так будет с сортировкой. Сортировал готовый массив пузырьком. Казанскому респект и уважуха за то, что завернул пример со словарем!
mc-black, сортировать уникальные лучше сразу в коллекции без использования словаря и пузырька ,
а судя по Вашим высказываниям "за то, что завернул пример со словарем" Вы далеки от оптимизации кода.
Для меня нет ни каких проблем отсортировать массив, хоть пузырком, хоть на ADO.
а гонять одни и теже данные по циклам не самый лучший подход.
Успехов Вам.

Добавлено через 29 минут
что бы не быть голословным
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Function GetUnicSplit(RngSplit As Range, Delim As String)
    Dim arr(), x, tt$, t, arr2(), j&, i&
    arr = RngSplit.Value
    On Error Resume Next
     With New Collection
    For Each x In arr()
        t = Split(x, Delim)
        For i = 0 To UBound(t)
            tt = Trim(t(i))
        If IsEmpty(.Item(tt)) Then
          For j = 1 To .Count
            If tt < .Item(j) Then Exit For
          Next
          If j > .Count Then .Add tt, tt Else .Add tt, tt, Before:=j
        End If
        Next
    Next
    ReDim arr2(1 To .Count)
    For i = 1 To .Count
      arr2(i) = .Item(i)
    Next
  End With
    GetUnicSplit = arr2
End Function
1
mc-black
2769 / 703 / 104
Регистрация: 04.02.2011
Сообщений: 1,432
11.11.2011, 13:41 13
R Dmitry,
1. не делайте преждевременных выводов.
2. зачем переписывать код? он просто работает и выполняет свою задачу. тут ничего доказывать не требуется.
3. вы правда считаете ваш пример оптимальным из всех возможных? если да, то по какому критерию: быстродействие, отказоустойчивость, читабельность кода, объем кода, соблюдение соглашений о форматировании?
0
R Dmitry
406 / 75 / 6
Регистрация: 31.01.2011
Сообщений: 111
Записей в блоге: 1
11.11.2011, 13:54 14
Цитата Сообщение от mc-black Посмотреть сообщение
R Dmitry,
1. не делайте преждевременных выводов.
2. зачем переписывать код? он просто работает и выполняет свою задачу. тут ничего доказывать не требуется.
3. вы правда считаете ваш пример оптимальным из всех возможных? если да, то по какому критерию: быстродействие, отказоустойчивость, читабельность кода, объем кода, соблюдение соглашений о форматировании?
Я не хочу вступать в полемику с Вами, каждый останеться при своем мнении, данный код в любом случае будет работать быстрее, чем в варианте со словарем и пузырем, хотя я и не замерял.

это не показатели : "читабельность кода, объем кода"
единственный баг этого кода, что в нем нет проверки исходного массива на массив.
________________________
Надеюсь модераторы не забанят за флуд, не по теме
0
NeoKamI
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 10
11.11.2011, 14:17  [ТС] 15
mc-black
R Dmitry
зато простая, казалось бы, задача нашла свое решение, да еще и с альтернативами
спасибо Вам!
я решила, буду двигаться дальше смотрю возможность выбора нескольких вариантов из списка
эт уже не по работе, чисто из неуемного спортивного интереса
0
NeoKamI
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 10
25.11.2011, 11:23  [ТС] 16
Друзья, и снова я с моими фильтрами.
Озадачилась сделать несколько фильтров на одном листе, визуализации добилась, но получила ошибку.
Поясните, пожалуйста, где я накосячила? Аттачу.
Я хотела последовательной фильтрации добиться
Заранее благодарна!
0
Вложения
Тип файла: xls Summary.25.11.2011.xls (57.5 Кб, 70 просмотров)
NeoKamI
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 10
29.11.2011, 09:53  [ТС] 17
хотя, судя по гуглу, два умных фильтра для одного листа это перебор. а жаль)
0
mrf
12 / 12 / 4
Регистрация: 16.03.2012
Сообщений: 239
Завершенные тесты: 2
02.06.2017, 17:12 18
Добрый день,
как-нибудь можно в данном фильтре с комбобоксом сделать так, что при установке критерияя фильтрации в любом случае выводились строки, которые содержать ## в первом столбце?
Например, на листе данные идут по разделам:
строка 1: ##1
строка 2:a b c d
строка 3:##2
строка 4:s d g s
строка 5:##3
строка 6:q f c d
При выборе в комбобоксе критерий "с" (выбирается по столбцу 4) остаются только две строчки - вторая и шестая.
Хотелось бы, чтобы оставались и строчки в столбце №1 которых стоит ##. Это можно сделать?
Или, если нельзя оставить строчки с критерием по 1 столбцу "##", то в дополнение сдлеть комбобокс с фильтром по 2 значениям типа " и С, и ##". Я тогда ## поставлю в заголовки столбца 4 (перенесу с 1 столбца в 4ый).
Заранее признателен!

Добавлено через 15 секунд
Добрый день,
как-нибудь можно в данном фильтре с комбобоксом сделать так, что при установке критерияя фильтрации в любом случае выводились строки, которые содержать ## в первом столбце?
Например, на листе данные идут по разделам:
строка 1: ##1
строка 2:a b c d
строка 3:##2
строка 4:s d g s
строка 5:##3
строка 6:q f c d
При выборе в комбобоксе критерий "с" (выбирается по столбцу 4) остаются только две строчки - вторая и шестая.
Хотелось бы, чтобы оставались и строчки в столбце №1 которых стоит ##. Это можно сделать?
Или, если нельзя оставить строчки с критерием по 1 столбцу "##", то в дополнение сдлеть комбобокс с фильтром по 2 значениям типа " и С, и ##". Я тогда ## поставлю в заголовки столбца 4 (перенесу с 1 столбца в 4ый).
Заранее признателен!
0
02.06.2017, 17:12
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2017, 17:12

Нарисовать животное на листе Excel
Задание: нарисовать на листе Excel какое-нибудь животное, используя заливку ячеек. Была бы очень...

Разделитель клиентов в листе Excel
Здравствуйте, программка которую мы собрали тут на форуме работает отлично (сканер штрих кодов)...

Распечатать таблицу в листе Excel
|x |Y(x)| |1 | | (таблица) где x=1,1.5,2,....,6,5,7. и x/2, если x&lt;=3 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.