У меня есть некоторые данные с 5000 строк, один из столбцов представляет размер группы.Все они представляют собой текст с диапазонами значений, таких как:
"0 - 4", "5 - 9", "10 - 49", "50 - 99", "100 - 249", "250 or more"
Все они хранятся в виде текста.
Я написал несколько VBA для использования автофильтра для отображения всего, кроме элемента, который я хочу, чтобыдругие строки могут быть удалены.Например:
activesheet.range("a1:a5000").autofilter field:=1, criteria1:="<>" & strValue
strValue
заполняется каждым значением и объявляется как строка.
- Все работает нормально, кроме случаев, когда оно достигает
"10 - 49"
.Это не исключает "10 - 49"
при отображении. - Я могу повторить поведение вручную - если я перейду к раскрытию автофильтра для столбца, выберите Текст
Filters>Does Not Equal
, а затем выберите вариант раскрытия для "10 - 49"
(или просто введите его) и нажмите OK
, это не будет применяться.Он по-прежнему показывает 10 - 49 строк. - Когда я возвращаюсь к текстовому фильтру
Filters>Custom
, он не равен 18172
.
18172
это значение даты для "Oct-1949"
.
Даже если я явно установлю код:
activesheet.range("a1:a5000").autofilter field:=1, criteria1:="<>10 - 49"
Он преобразует 10 - 49 в значение даты.Если вы запишите макрос и сделаете его вручную через раскрывающийся список автофильтров, в записанном коде будет показан критерий 1 как "<>Oct-1949"
.
Я получил его для работы с помощью criteria1:="<>*" & strValue
, но это работает сэти данные, но могут не работать, если бы у меня были другие значения с 10 - 49
.
Поэтому мой вопрос, есть ли какой-либо способ предотвратить преобразование
"<>10 - 49"
в * 1046?*
"<>Oct-1949"
Нужно ли как-то избегать, чтобы сказать, что он должен воспринимать это как истинный текст?Или это просто причуда Excel?Он работает с criteria1:="=10 - 49"
(даже при записи макроса).
Это происходит в Excel 2010, 2013 и 2016.