Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с AdvancedFilter / 7 сообщений из 7, страница 1 из 1
19.02.2011, 12:32
    #37125917
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с AdvancedFilter
Добрый день,
Не могу получить уникальные записи через фильтр. Есть база, в которой в одном столбце могут быть следующие строки: "Винни Пух", Пятачок", "Винни". Так вот, если я ставлю критерий "Винни", то в результатах фильтра получается и "Винни" и "Винни Пух". Вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
        With Worksheets("Database")
          .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear
          .Cells(intStartRow, intTempStartCol +  1 ).Value = Me.ComboBox2.Value
          .Columns("A:AX").AdvancedFilter xlFilterCopy, .Range(.Cells(intStartRow -  1 , intTempStartCol), .Cells(intStartRow, _
          intTempStartCol +  49 )), .Cells(intTempStartRow, intTempStartCol), Unique:=True
          If Not .Cells(intTempStartRow +  1 , intTempStartCol +  10 ).Value = "" Then
             Me.TextBox12.Value = .Cells(intTempStartRow +  1 , intTempStartCol +  10 ).Value
          End If
        End With
Где собака зарыта? Ведь стоит в значении фильтра Unique:=True.
Буду признателен за помощь.
...
Рейтинг: 0 / 0
19.02.2011, 15:05
    #37126020
Проблема с AdvancedFilter
dd44,
ничего странного, ведь "Винни" != "Винни Пух". Условие уникальности не нарушается.
...
Рейтинг: 0 / 0
19.02.2011, 15:10
    #37126022
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с AdvancedFilter
По идее, согласно хелп, уникальность True подразумевает конкретное совпадение, а при уникальности False выдаются все содержащие условия данные. Так что не понятно, почему не работает.
Но если Вы правы, тогда как получить именно уникальное значение?
...
Рейтинг: 0 / 0
19.02.2011, 15:37
    #37126050
Проблема с AdvancedFilter
dd44,
уникальность подразумевает, чтто если в фильтруемом диапазоне будут полностью совпадающие строки, отвечающие условиям фильтрации, то в отфильтрованный диапазон попадет только по одной из них. К "конкретности совпадения" уникальность никакого отношения не имеет... лучше на примере

СписокОтфильтрованный списокОтфильтрованный список(Unique:=True)АльфаАльфаАльфаАльфаАльфаАльфонсАльфонсАльфонсАль-ПачиноАль-ПачиноАль-ПачиноАль-ПачиноАль-ПачиноБравоЧарлиДельтаДельтаЭкоЭкология

УсловиеАль*
...
Рейтинг: 0 / 0
19.02.2011, 16:29
    #37126101
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с AdvancedFilter
В вашем примере указано "Аль*", а как мы знаем, звездочка это любое продолжение. Ну ладно, допустим данный метод не корректен, тогда как сделать так, чтобы выводил только конкретное значение, а не все совпадающие?
...
Рейтинг: 0 / 0
19.02.2011, 18:13
    #37126179
Проблема с AdvancedFilter
dd44,
давайте Вашу базу... посмотрим.
...
Рейтинг: 0 / 0
21.02.2011, 11:06
    #37127650
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с AdvancedFilter
Нашел решение проблемы, надо было просто в старом покопаться.\
Кому интересно:
Чтобы получить точное соответствие отобранных значений заданному образцу, например текст, следует ввести следующую формулу:="=текст".
Поэтому текст кода при присвоении значения фильтра должен быть не
Код: plaintext
.Cells(intStartRow, intTempStartCol).Value = Me.ComboBox3.Value
а
Код: plaintext
.Cells(intStartRow, intTempStartCol).Formula = "=" & Chr( 34 ) & "=" & Me.ComboBox3.Value & Chr( 34 )
Тогда при значении фильтра "Винни" запись "Винни Пух" будет игнорироваться.

Всем спасибо.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с AdvancedFilter / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]