I haven't been able to find a Milan>Zermatt bus.
Private airport transfers (e.g. www.shuttledirect.com) give quotes of 200+ euro if booked in advance. Unbooked taxis are likely to cost more.
If there are only 1 or 2 of you then taking the train will be cheaper.
You can make the journey by train from Milan Centrale station (which has good public transport links with Malpensa, Linate and Bergamo airports). Some departures only require one change, some need 2. Minimum journey time is just under 4 hours.
The Italian railway website does not give info for most international journeys but you can see train times and details in English on the excellent:
You can get an idea of fares by looking at the cost Milan>Brig (where you will change)....36 euro...and then finding the fare Brig>Zermatt on the Swiss railway website in English:
Zermatt>Milan costs from 79CHF, Brig>Zermatt costs from 37CHF.
There is a Swiss Post Bus that goes from Domodossola to Brig via the Simplon Pass. You could take the train from Milan to Domdossola, then the bus to Brig, then the train from there to Zermatt. It would add a few hours to your trip, but it would be quite scenic in good weather.
See postbus.ch/pag-startseite/pa... for details
Book Milan to Brig from €22 at www.italiarail.com (easier to use than trenitalia.com for this journey)
Then buy a Brig-Zermatt local ticket at the station when you get there - you can check prices and times at www.sbb.ch
Be the first to rate this answer!