Index and match with multiple criteria

Apple08

Active Member
Joined
Nov 1, 2014
Messages
450
Hi All

I have a workbook with two worksheets, Sheet1 is 'Report' and Sheet 2 is 'All', I need to lookup the dates in column J of 'All' based on multiple criteria in 'Report' column D, E and cell K4.

I have done the formula below in Report cell K5 and I need to paste the formula from K5 to the last row of K:

{=index('All'!$J:$J,match(1,($D5='All'!$D:$D)*($E5='All'!$E:$E)*($K$4='All'!$I:$I),0))}

I have use ctrl+shift+enter to input the above formula, but the formula was shown in cell rather than the date result. Please can anyone tell me what have I done wrong?

And if how to put the formula in VBA? Many thanks.
 

Excel Facts

Which came first: VisiCalc or Lotus 1-2-3?
Dan Bricklin and Bob Frankston debuted VisiCalc in 1979 as a Visible Calculator. Lotus 1-2-3 debuted in the early 1980's, from Mitch Kapor.
Check that the cell is not formatted as text, also check on the formula tab that "Show formulas" is not highlighted.
 
Upvote 0
Hi Fluff, I have checked that the cell was formatted as general, and 'Show formulas' isn't highlighted.
 
Upvote 0
When you look in the formula are the {} visible?
 
Upvote 0
In that case I'm not sure
 
Upvote 0
I found out my mistake, I typed in the {} manually with the formula before enter it! I have now got the formula correct. Please could I ask if I need to add it to VBA, do I just put it as normal formula or else? Can it copy down to the last row? Thanks.
 
Upvote 0
If you enter the formula, then confirm with Ctrl Shift Enter, you an then drag the formula down as far as needed.
If either of the neighbouring columns are filled to the last row, then rather than dragging the formula down, you can double click the bottom right hand corner of the cell & it will fill down automatically.
 
Upvote 0
Thanks Fluff, I can manage to copy it down the last row, however, I would like to know how to put it in VBA? Is it the same as normal Range("K5").formula =
{=index('All'!$J:$J,match(1,($D5='All'!$D:$D)*($E5='All'!$E:$E)*($K$4='All'!$I:$I),0))}
 
Upvote 0
It needs to be something like
Code:
Range("K5").FormulaArray = "=index('All'!$J:$J,match(1,($D5='All'!$D:$D)*($E5='All'!$E:$E)*($K$4='All'!$I:$I),0))"
Range("K5:K" & LastRow).Filldown
But I would recommend limiting the your ranges. Using whole column references in an array formula is very slow.
 
Upvote 0

Forum statistics

Threads
1,214,563
Messages
6,120,248
Members
448,952
Latest member
kjurney

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