Despite the number of questions on this topic I haven't been able to find the resolution to my issue (which may or may not be my fault).
I need to autofilter a range to return blanks and numbers beginning with 614.
This column has been preformatted using the following:
Range("B:C").NumberFormat = "###0"
This is to remove the scientific notation format that Excel wants to use on some of the numbers.
I then use the following to apply the filter:
With ActiveSheet
.AutoFilterMode = False 'remove any active filters
.Range("A1:O1").AutoFilter Field:=2, Criteria1:="614*", Operator:=xlOr, Criteria2:="="
End With
No matter how I apply the filter, including the use of an array, the filter only returns the blank values. I have also used Criteria1:="=614*" for the same result.
The only thing I am certain about is that the number is going to start with 614 and will have a variety of combinations following.
Is the problem with the data type? Blanks are strings and numbers are numbers? There has been only one blog that has slightly addressed this issue and seems to indicate that I cannot use wildcards in this instance. Is this correct?
Essentially the numbers are Australian mobile numbers therefore have a length of 11 characters with only the first 3 being a constant. This is why I really want to use a wildcard to find these records. I need to eliminate these plus the blanks from the dataset. According to your responses and what I was largely beginning to realise my only choice is to convert the numbers to strings if I want to do this as a one step process. This will affect later code. I am assuming that this can't be done as part of the autofilter criteria (wishful thinking)?
Consider add ' in each of your data.
Anytime you run into a restriction on what you can do with the Range.AutoFilter method, simply build a dictionary of matching criteria using VBA's text, number and/or date manipulation and apply the keys of the dictionary to an AutoFilter operation as an array.
By using this method, any manipulation you can perform on values to check them for inclusion or exclusion through standard VBA methods can generate a valid array to be used as a filter set. By bulk loading the values from the worksheet into a variant array, the time to read and evaluate individual cells is virtually non-existent.
Before building and applying filter
After applying filter