Instead of worksheetfunction.match you could use find method instead of index simply use addressing . But the gain will will probably not satisfy you.

If we were about medium size datasets - I'd go into operations not directly on worksheet ranges, but on arrays of data
like:
Dim myarr
myarr = Range("A1:D5")
stop code here and look in the locals window what is in myarr.

But as we are talking about realy large datasets, probably database approach would let you increase code speed from minutes to seconds.
Keywors for search DAO ADO ADODB . And dont worry it can all (also datasource) be in excel. May be http://support.microsoft.com/kb/257819 or is a good starting point or may be http://www.vbadventure.com/2012/11/u...el-vba-part-1/