Hi Mr Excel,
I am struggling to get Excel’s Advanced Filter to work on a database, where not every field is populated. The problem I am experiencing is that Excel is treating a blank field as a criteria. When I run the Advanced Filter, any fields in the database that are not populated are filtered out of the results.
To try and illustrate the problem with a simple example: I have a database with two filter criteria: TYPE and CATEGORY. If I filter on type, it returns 100 results [correct]. If I filter on category, it returns 50 results, which is incorrect, as it should be 70. The reason it is returning an incorrect result is because it is treating the unpopulated/blank fields under TYPE as a criteria.
I have set up my criteria table with the below Boolean formulas: if the result of the formula is true (ie if it is blank), it returns “” and if it is false, it returns the selection.
=IF(ISBLANK(type),"",type)
Frustratingly, Excel Advanced Filter still treats the result of this formula as a criteria. So when I run the procedure, with only CATEGORY selected, all blank fields under the TYPE are filtered out of the results. The only way to get the Advanced Filter to produce the correct result is to delete the formula under TYPE from the criteria table – which of course defeats the object!
Does anyone know how to work around this problem? My intention is to incorporate the Advanced Filter into a VBA procedure, where the user will be able to select criteria under TYPE and CATEGORY from drop down menus.
I can think of only three possible solutions to the problem:
1. Ensure there are no blanks in the database (not really practical as it is not always possible to apply type or category)
2. Tweak the formula so that the Advanced Filter will not treat “” as a criteria
3. Write a VBA procedure, where the selections are written each time to the criteria table when the code is run (hoping to avoid this!)
Any ideas for solving this problem would be really appreciated!
Best regards,
Shirley
I am struggling to get Excel’s Advanced Filter to work on a database, where not every field is populated. The problem I am experiencing is that Excel is treating a blank field as a criteria. When I run the Advanced Filter, any fields in the database that are not populated are filtered out of the results.
To try and illustrate the problem with a simple example: I have a database with two filter criteria: TYPE and CATEGORY. If I filter on type, it returns 100 results [correct]. If I filter on category, it returns 50 results, which is incorrect, as it should be 70. The reason it is returning an incorrect result is because it is treating the unpopulated/blank fields under TYPE as a criteria.
I have set up my criteria table with the below Boolean formulas: if the result of the formula is true (ie if it is blank), it returns “” and if it is false, it returns the selection.
=IF(ISBLANK(type),"",type)
Frustratingly, Excel Advanced Filter still treats the result of this formula as a criteria. So when I run the procedure, with only CATEGORY selected, all blank fields under the TYPE are filtered out of the results. The only way to get the Advanced Filter to produce the correct result is to delete the formula under TYPE from the criteria table – which of course defeats the object!
Does anyone know how to work around this problem? My intention is to incorporate the Advanced Filter into a VBA procedure, where the user will be able to select criteria under TYPE and CATEGORY from drop down menus.
I can think of only three possible solutions to the problem:
1. Ensure there are no blanks in the database (not really practical as it is not always possible to apply type or category)
2. Tweak the formula so that the Advanced Filter will not treat “” as a criteria
3. Write a VBA procedure, where the selections are written each time to the criteria table when the code is run (hoping to avoid this!)
Any ideas for solving this problem would be really appreciated!
Best regards,
Shirley