title: Optimization of vlookup with multiple criteria (index + match)
body: <p>I have a 12x18 Excel range which draws data from a 823x20 sheet (<code>Results!$A:$T</code>) according to the 12x18 range's page, row and column headers (criterion1, criterion2 and criterion3, respectively)</p>
  
  <pre><code>={INDEX(Results!$A:$T,
          MATCH(1, (criterion1 = Results!$A:$A) * (criterion2 = Results!$B:$B), 0),
          MATCH(criterion3, Results!$A$1:$T$1, 0))}
  </code></pre>
  
  <p>As you can see, it's not that much data, but still, when I change the page header, my computer (2 GHz Intel Xeon with 24 GB of RAM) takes about a minute to update the 216 (12x18) index searches and I'm not even half way done with creating searches.</p>
  
  <p>Earlier on my project, these searches only had one criterion, so I used <code>VLOOKUP()</code> and the results came very quickly. However, now I need to find values according to three criteria, and the function above is the best way I've managed to accomplish this. However, it seems to be the responsible for the long computation times I'm getting. So my question is: <strong>how can I optimize a <code>VLOOKUP()</code> of multiple criteria? Should I tweak <code>INDEX(1, MATCH()*MATCH(), MATCH())</code> or is there a faster way to do this?</strong></p>
  
  <p>Here's a sample of the 12x18 index searches (branch name is the only variable that the end-user will be able to change):</p>
  
  <p><img src="https://i.stack.imgur.com/VlKhy.png" alt="Index"></p>
  
  <p>And of the 823x20 sheet it searches (column A has no merges, actually):</p>
  
  <p><img src="https://i.stack.imgur.com/gpDlg.png" alt="enter image description here"></p>