Did you consider Pivottables ?