2016-06-04 4 views
0

Я сделал 3 из этих полей поиска, которые извлекают значения при поиске. Только когда я использую текст, значения извлекаются. Всякий раз, когда я использую числа, столбец не получает значений. Лучшим способом было бы то, что текстовое поле могло искать как текст, так и целое число.Поиск по столбцу integer не получает значений

Я думаю, что это должно иметь какое-то отношение к формату, я изменил формат для столбца, выбрав «столбцы, щелкните правой кнопкой мыши по столбцу, выберите ячейки формата, измените текст». Но это не сработало.

Так выглядит, прежде чем искать по номеру. enter image description here

Так выглядит, когда я печатаю число (число). enter image description here

Вот код VBA я использую, как уже упоминалось это работает, когда я поиск по тексту, но не номера ..

Private Sub TextBox3_Change() 
     Sheet1.Range("A2:CM" & Rows.Count).AutoFilter Field:=3, Criteria1:="*" & TextBox3.Value & "*" 
End Sub 
+0

Возможный дубликат [Фильтр числового поля] (http://stackoverflow.com/questions/20375818/filter-numeric-field) – Ralph

ответ

0

Вашим критериям представляет собой текстовый фильтр; он не будет обнаруживать числа в ваших данных, если только цифры не введены как текст. Изменение ячейки numberformat не изменит значения, которые были введены как цифры в текст. Они должны быть повторно введены как текст. Это можно сделать программно; путем префикса номера с помощью одной кавычки или форматирования столбца в виде текста перед вводом числовых значений.

Вы также можете запустить фильтр дважды - сначала с текстовым фильтром, затем с числовым фильтром.

Или, как указано @Ralph в комментариях ниже, вы также можете использовать вспомогательный столбец, используя функцию TEXT, чтобы преобразовать числовые данные в текст, а затем отфильтровать этот столбец.

Лучший способ сделать это может зависеть от вашей конечной цели.

+0

Хотя я настоятельно рекомендую * не * конвертировать числа (особенно в файл Excel) в текст, который вы (к сожалению) правильный. Лично я бы посоветовал использовать любое из следующего: http://stackoverflow.com/a/20376386/1153513 – Ralph

+0

@Ralph Да, также будет работать вспомогательная колонка. Но, как я писал, наилучший способ ** выполнить задачу зависит от неподдерживаемой информации. Я добавлю ваше предложение к моему ответу. Спасибо. –

+0

Скорее всего, это 7 строк кода VBA. Если OP включает их в свой существующий код VBA (а не с использованием AutoFilter), то случай закрывается и решается. – Ralph

0

с того, что «номера» вид, как показано на скриншоте ФП, в возможное решение было бы следующее:

Private Sub TextBox3_Change() 
    Dim criteria As String 
    With TextBox3 
     If IsNumeric(.Value) Then 
      criteria = .Value 
     Else 
      criteria = "*" & .Value & "*" 
     End If 
    End With 
    Sheet1.Range("A2:CM" & Rows.Count).AutoFilter Field:=3, Criteria1:=criteria 
End Sub 
+0

@ DlerAri вы прошли через это? – user3598756

+0

@DlerAri было бы неплохо дать отзывы людям, пытающимся помочь вам – user3598756

Смежные вопросы