Расширенный фильтр с номером в виде текста - PullRequest
0 голосов
/ 03 ноября 2018

У меня проблема с расширенным фильтром в Excel.

Я позволю вам понять и воспроизвести ту же проблему.

Есть Таблица T1 с данными

Table T1

И вторичный Таблица T2 , которая является клоном T1, но пустой

Я буду использовать T2 для предварительной фильтрации T1

Table T2

Я сделаю это с помощью макроса, который я создал, но вы можете просто нажать на расширенный фильтр и выбрать вторую таблицу после заполнения ее по диагонали "искомым значением" , я буду использовать Для этого найдите строку ПОИСКА ПОЛЯ и макрос и примените фильтр примерно так:

T2.SetDiagonalValue val
T1.Range.AdvancedFilter xlFilterInPlace, T2.Range

Вот что произойдет, если я напишу 572 в поле поиска

Table T1 Search 572

Table T2 Range

Это промежуточный шаг моего макроса:

Adv Filter

Результат:

Result

И есть проблема:

В таблице T1 i есть несколько столбцов один из них имеет почтовый индекс (CAP) с ячейками в формате Text , но , написанными только число .

Если я использую Расширенный фильтр для поиска текста, он будет работать: пример

Table T1 Search Text

Table T2 Data

Но если я попытаюсь найти NUMERIC VALUE , он будет работать только в том случае, если искомое значение соответствует всему содержимому ячейки и ЧАСТИЧНО РАБОТАЕТ (он покажет только результат числа в отформатированных ячейках как ТЕКСТ, ячейка с желтым фоном форматируется как НОМЕР ), если я помещаю символ Джолли в поле поиска:

Не работает:

Not Working

Не отображается желтая ячейка:

Partially Working

Показаны все:

Working

Вместо , если ячейки - это текст и начинаются с номера , он будет работать только в том случае, если я поставлю полное начальное число и по крайней мере 1 символ после него:

Поиск 622SVCB, не работает:

Not Working

Рабочая:

Working

Каждый столбец установлен как «ТЕКСТ», кроме ячеек с желтым фоном. Почему это случилось?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Я постараюсь ответить на ваш вопрос:

  1. , хотя вся ваша таблица отформатирована в виде текста, выделенное поле желтым цветом по-прежнему очевидно как число, поскольку оно все еще выровнено по ПРАВО

  2. матрица критериев применяется в качестве текстового фильтра (что-то вроде скриншота 1, но НЕ как скриншот 2). и текстовый фильтр не будет применяться к числу, если это не точное совпадение enter image description here

enter image description here

Чтобы решить вашу проблему:

  1. добавить строку кода в таблицу, чтобы каждый столбец преобразовывался в текст перед применением фильтра
  2. добавить * ко всему поисковому значению, чтобы оно также читалось как текст

Код

T2.SetDiagonalValue val & "*"

'sample code to force the column to TEXT 

Range("Table1[[#All],[TEXT WITH NUMBER]]").TextToColumns 
Destination:=Range("Table1[[#Headers],[TEXT WITH NUMBER]]"), DataType:=xlFixedWidth, 
FieldInfo:=Array(0, 2)

'end of sample code

T1.Range.AdvancedFilter xlFilterInPlace, T2.Range

вот результат, который я получаю:

enter image description here

Надеюсь, что это поможет

0 голосов
/ 14 ноября 2018

Подходя к расширенному фильтру в Excel, постарайтесь запомнить несколько вещей:

  • Выражение для Criteria range должно быть равно TRUE или FALSE
  • При вводе числа в Criteria range Excel будет искать это точное число (не выше, не ниже), независимо от того, как число отформатировано в электронной таблице
  • В Excel предполагается, что Criteria range предшествует = , если фильтр не начинается с другого оператора (т. Е. >, <, >=, <=, <>)
  • Независимо от того, как отформатировано TableT1 , Excel будет отображать Criteria range точно так, как напечатано. Например, если Criteria range равно всем числам (например, 123), Excel будет искать числовое совпадение. Если Criteria range - это все буквы или , состоящие из комбинации букв и цифр (например, abc или abc123), Excel будет сравнивать текстовые символы.

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

Критерии фильтра (TableT2)
Filter criteria

Отфильтрованные результаты (TableT1)
Filtered results

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...