Forum Discussion
Filtering out account codes based on other data
- Jan 19, 2022
kerry590 here is the formula and fill down:
=TRANSPOSE(UNIQUE(FILTER('Codes Used'!C:C,(A2='Codes Used'!A:A)*(B2='Codes Used'!B:B),"")))see attached
I'd modify as
=IFERROR(
UNIQUE( TRANSPOSE(
FILTER(
'Codes Used'!C2:INDEX( 'Codes Used'!C:C, COUNTA('Codes Used'!C:C) ),
('Codes Used'!A2:INDEX( 'Codes Used'!A:A, COUNTA('Codes Used'!A:A) )= A2 ) *
('Codes Used'!B2:INDEX( 'Codes Used'!B:B, COUNTA('Codes Used'!B:B) )=B2) ) ),
0),
"no such")
that significantly improves the performance.
- SergeiBaklanJan 19, 2022Diamond Contributor
Oh, yes, took not updated file. It shall be 1 as parameter for UNIQUE
=IFERROR( UNIQUE( TRANSPOSE( FILTER( 'Codes Used'!C2:INDEX( 'Codes Used'!C:C, COUNTA('Codes Used'!C:C) ), ('Codes Used'!A2:INDEX( 'Codes Used'!A:A, COUNTA('Codes Used'!A:A) )= A2 ) * ('Codes Used'!B2:INDEX( 'Codes Used'!B:B, COUNTA('Codes Used'!B:B) )=B2) ) ), 1), "no such")- mtarlerJan 19, 2022Silver Contributor
SergeiBaklan that is a good point but I would recommend going for formatting as a table:
=TRANSPOSE(UNIQUE(FILTER(Codes_Used[ACCOUNT],(A2=Codes_Used[INT])*(B2=Codes_Used[MIN]),"")))That said I also notice you reversed the UNIQUE and TRANSPOSE functions in your version. I'm not seeing why and wondering if there was a specific reasoning for that.
- SergeiBaklanJan 19, 2022Diamond Contributor
1) Yes, table is much better. However, Code Used are pulled from the database, I'm not sure which technique is used for that and is it worth compare to dynamic range. Plus, form performance point of view dynamic range are more preferable. At least that was before, perhaps it is improved in modern Excel.
2) Order of functions - nothing is behind. Just started with this variant, when had phone call and after return your post is appeared. Decided to post my one accenting on performance.