I don't know if there are any built in reports that work better but you can use a simple SQL query like this one:
Code:
SELECT CustomerID, FirstName, LastName, Email, COUNT(OrderNumber) AS NumOrders, SUM(OrderTotal) AS OrderTotal
FROM Orders
WHERE RefundedOn IS NULL AND VoidedOn IS NULL
GROUP BY CustomerID, FirstName, LastName, Email
ORDER BY OrderTotal DESC
That should give you a list of your customers ordered by how much money they've given you which you could then export to csv or copy into excel or whatever. If you would rather arrange the results by how many times they've ordered just change the "OrderTotal" in the last line of the query to "NumOrders".
Hope this helps and I've not made any glaring mistakes