My guess is that those nasty, nested loops are your problem. Other thanh that, it is hard to go deeper.

Can you post the workbook, and give a bit more detail in what happens when preparing that data as in the code.