>>88
十分検討はしていませんが、いちおう試してみました。

forvalues i=1/10 {
insheet using "test`i'.csv"
save test`i'.dta,replace
clear
}

use test1.dta
forvalues i=2/10 {
merge id using test`i'.dta, sort unique _merge(_merge`i')
}

このような形で一応できました。

>Excel->複数CSVファイル->Stataで取り込み->Stataで結合
私の使っているエクセルのバージョンでは複数シートのエクセルから保存時に複数のCSVファイルに一度に出力が出来ないので、
ここで先に紹介して頂いたアプリケーションなどを使う必要がありそうです。
MacやWinに左右されない方法としては、エクセルでマクロを組むのが良さそうです。

Stataは読み込みもとても早く上記問題が解決できれば、Stataで行うのが良さそうです。
まだ十分理解していませんが、mergeした際に_mergeという新しい変数名でmergeの結果を出力するようで、
複数ファイルを扱う場合には、上記コマンドのように_mergeオプションで変数名を指定する必要がありました。
後uniqueオプションはどう働いているかまだ十分に検討しきれていません。

エクセルからCSVファイルのところが面倒なので私はRを使ってしまいましたが、Stataのサクサク動く様には改めて感心しました。