Alternative to "FILTER" Func with Multiple Criteria for Office 2019

GijoeBlack

New Member
Joined
Sep 22, 2021
Messages
23
Office Version
  1. 365
  2. 2016
  3. 2013
Platform
  1. Windows
  2. MacOS
Greetings All

I am out of ideas on how to implement a "FILTER" Func with Multiple Criteria for Office 2019 which does not support the function while Office 365 does. I have following example setup on O365 Excel and works like a charm.

I have (2) Workbooks - Workbook A [DCI Invoice.xlsx], Workbook B [DCI-TEST.xlsx]. The FILTER func is being used within Workbook A to bring in certain Columns/Rows from Workbook B so long as it meet the (4) conditions where $F$6 is within Workbook A. See below:

=FILTER('[DCI-TEST.xlsx]DCI Invoices'!$B:$F,('[DCI-TEST.xlsx]DCI Invoices'!$A:$A=$F$6)*('[DCI-TEST.xlsx]DCI Invoices'!$Z:$Z>=1)*('[DCI-TEST.xlsx]DCI Invoices'!$H:$H=0)*('[DCI-TEST.xlsx]DCI Invoices'!$G:$G<>0),"NOT FOUND")

Any advice / help is greatly appreciated.

NOTE: I have utilized INDEX, Match, OFFSET for some other areas but can't figure out how to include the above (4) Criteria.
 

Excel Facts

Workdays for a market open Mon, Wed, Friday?
Yes! Use "0101011" for the weekend argument in NETWORKDAYS.INTL or WORKDAY.INTL. The 7 digits start on Monday. 1 means it is a weekend.
Here's one way:

Book3
ABCDEFGHIJKLM
1Col BCol CCol DRowCol BCol CCol D
2B1C1D11A18B7C7D7
3B2C2D22AZ10B9C9D9
4B3C3D31A    
5B4C4D42A    
6B5C5D51A    
7B6C6D62Z    
8B7C7D71Z    
9B8C8D82Z    
10B9C9D91Z    
11B10C10D102Z    
12
Sheet16
Cell Formulas
RangeFormula
J2:J11J2=IFERROR(AGGREGATE(15,6,ROW(Sheet16!$B$2:$B$11)/(Sheet16!$F$2:$F$11=I$2)/(Sheet16!$G$2:$G$11=I$3),ROWS(J$2:J2)),"")
K2:M11K2=IF($J2="","",INDEX(Sheet16!B:B,$J2))


This is simplified (2 conditions), and all on one sheet, but you should be able to see how to adapt to your situation. I put sheet names on the references that go to the other workbook.
 
Upvote 0
Solution
@Eric W Thank you for looking into this. I will give it a try and update or if I have any questions. Having said that, could you think of using Index,Match, Offset somehow?

Also, I assume (Sheet16!$F$2:$F$11=I$2)/(Sheet16!$G$2:$G$11=I$3) are the (2) conditions that you are referring to. Are you somehow able to show how will I use the conditions in question that I posed? This will be very helpful.

Thanks again.
 
Last edited:
Upvote 0
Having said that, could you think of using Index,Match, Offset somehow?
Maybe, but the way I showed you is the best way I know. I don't think it would be helpful to spend time devising another way. Also, OFFSET is a volatile function, meaning it calculates every time the sheet calculates. This can slow down your sheet and should be avoided if possible.

Also, I assume (Sheet16!$F$2:$F$11=I$2)/(Sheet16!$G$2:$G$11=I$3) are the (2) conditions that you are referring to. Are you somehow able to show how will I use the conditions in question that I posed? This will be very helpful.
I'm not planning on creating a workbook with your names, I'd hoped you'd be able to adapt what I showed you. Here's how I think it would look, but this is not tested and might have a typo in it:

Excel Formula:
=IFERROR(AGGREGATE(15,6,ROW('[DCI-TEST.xlsx]DCI Invoices'!$B$1:$B$10000)/('[DCI-TEST.xlsx]DCI Invoices'!$A$1:$A$10000=$F$6)/('[DCI-TEST.xlsx]DCI Invoices'!$Z$1:$Z$10000>=1)/('[DCI-TEST.xlsx]DCI Invoices'!$H$1:$H$10000=0)/('[DCI-TEST.xlsx]DCI Invoices'!$G$1:$G$10000<>0),ROWS(J$2:J2)),"")

This assumes you're putting it in cell J2. I also used a range of $B$1:$B$10000 (and for the other ranges) for performance reasons. Using the whole column would probably slow down your sheet noticeably. Pick a row that's well below the bottom of your data. I don't know a better way using older functions, that's why FILTER was invented. As before, this formula returns the row of the matching row, and the INDEX formula returns the individual column values.
 
Upvote 0
Hello @Eric W

Appreciate and noted your thoughts on INDEX,MATCH, OFFSET.

Thank you again for sharing the scenario using the original conditions that I will be able to utilize within the workbook. I will run some test scenarios and let you know how it goes.

Thanks so much ..
 
Upvote 0
Unfortunately, keep on getting "There's a problem with this formula" right at "$B$10000)" referring to "ROW[reference]" though I have got all the conditions in place with entire formula [=IFERROR(AGGREGATE(15,6,ROW('[DCI-TEST.xlsx]DCI Invoices'!$B$1:$B$10000)/('[DCI-TEST.xlsx]DCI Invoices'!$A$1:$A$10000=$F$6)/('[DCI-TEST.xlsx]DCI Invoices'!$Z$1:$Z$10000>=1)/('[DCI-TEST.xlsx]DCI Invoices'!$H$1:$H$10000=0)/('[DCI-TEST.xlsx]DCI Invoices'!$G$1:$G$10000<>0),ROWS(H$37:H37)),"")].

Thoughts...

NVM - I think I found the problem. Gonna keep testing. Ty again.
 
Last edited:
Upvote 0
@Eric W All the test resulted into success. Thank you for your help and direction on this.

Cheers
 
Upvote 0
I'm glad you got it working! I tried your formula, and couldn't find any issues, so I'm glad you stuck with it. Thanks for the update. 🙂
 
Upvote 0

Forum statistics

Threads
1,216,091
Messages
6,128,775
Members
449,468
Latest member
AGreen17

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top