Anyway, here it is. I did this on Excel 2007 but in compatibility mode so it should work with 2003. The code is all in a single sub in Module1 and it's pretty well commented.
A few notes: I've added some ranges. If you decide to pretty up the worksheet, you'll want to change them. Make sure that they're still all parallel. An easy way to do this would be to add entire rows before the table.
The macro clears out the required matches before it runs. It doesn't check to make sure it's got enough space for all the rounds.
Divisions have to be numbered as integers. You could allow for division names, but you'll have to either ensure the team list is sorted or make your own list of divisions. That's easy in most other languages, just use a hash or associative array, but VB sucks at that.
BTW... if you're unfamiliar with VB, bring up the editor (sorry, it's different for different versions of Excel) and just hit F1 on words you're not familiar with. Excel has great online help.
The trickiest part of that code is in the "clockwise rotation" thing with the Mod operator. If you don't understand modulus arithmetic, google it, it's not really all that complicated. I'd love to say that I carefully planned it out, but I really just futzed with the numbers until it did the same thing as on the wikipedia article.
You can test it: just sort it by Home or Away and you'll see that everyone plays everyone.
The algorithm also works just fine with an odd number of teams. I haven't tried it with too many edge cases; you might try it with just 2 teams or 3. It will skip 1 team entirely.