There is a very good solution for this topic into the book QlikView for Developers Cookbook from stephen-x.redmond (and many more nice ideas), see also: Books and literature.
The core of them is to use a dual-function as expression which offsets the labels with a line-break repeating on their ranking - here a snippet from them:
Dual(
Country & '-' &
Num(sum(Sales), '#,##0') &
Repeat(chr(13)&chr(10), rank(Sum(Sales))-6),
sum(Sales)
)
- Marcus