✔ 最佳答案
方法 - 自製Formula(用Marco/VBA), 公式名稱:
按 Alt + F11, 出現一個Visual Basic視窗, 按插入→選模組, 然後將下列的程式貼上, 關閉Visual Basic 視窗。
Public Function Egroup(yy As Range, zz As String, ss As Single) As String
a = Space(Int(ss * Sgn(ss)))
For Each y In yy
If IsEmpty(y) = False Then
yyy = yyy & Trim(y) & Trim(zz) & a
End If
Next
Egroup = Trim(yyy)
End Function
這樣, 便會誕生一條新公式叫 Egroup
在任何位置輸入公式: =Egroup(B1:B50,“;”,1)
便會將B1:B50內的e-mail address 串成一起, 並有 1分號及1空格相隔
公式架構: = Egroup( 儲存格範圍 , 分隔字元 , 空格數量)
儲存格範圍: 可橫排(A1:E1); 可直排(A1:A5); 可矩形陣列(A1:E5), data 是文字,數字,符號均可, 如有空格, 該格內容會被忽略。
分隔字元: 儲存格位址,文字,數字,符號均可, 左右兩邊如有空格, 會被省去
空格數量: 如有負號或小數值, 會被省去
以上3個引數, 必需輸入。
同類問題, 早兩天已答過:
http://hk.knowledge.yahoo.com/question/?qid=7007020802109
2007-02-14 09:57:49 補充:
在任何位置打上公式均可你是否已將程式, 即由 Public Function Egroup .......至 End Function止, 這段文字, 複製然後貼在Visual Basic 的視窗上.因出 #NAME , 是找不到此公式如再有問題, 請留E-MAIL, 我給你檔案
2007-02-15 22:01:07 補充:
a = Space(Int(ss * Sgn(ss)))這句其實沒有作用, 祇是怕用者輸入錯誤數值, 如 -1.5, 此句會將 -1.5變成 1以后是用 For Each ....Next (Loop 迥圈方法的一種), 將字串連成If IsEmpty(y) = False 即該格不是空白, 才做以下動作IF 和 Loop 幾乎是 vba 最重要及常用的, 沒有此兩種, 我估計可能80%以上的程式都無法完成其實此巨集的語法都是中階以下, 算是相對較容易當然, 寫巨集除了VBA語言外, 尚需一些數感/邏輯感/靈感, 而這些感覺是會在經驗中得到的
2007-02-18 01:09:10 補充:
Dim 即宣告資料型態, 即等如考車牌, 和考倒車牌後揸車, 考車牌時, 什麼細微的東西都要做足, 如有牌揸車, 祇要是安全及無壞影響, 一些小事是可以不需太執著的。如是交功課考試, 當然要加上Dim a As StringDim y As String及在 Next 後面加上 y這些宣告會對記憶體分配及運算速度有影響(即如將公式下拉幾千個), 但今次的公式, 基本上不會下拉, 我便貪方便簡略了。其實第一句 ss As Single, 我是用錯, 應該是 ss As Interger較佳, 因 Interger 比 Single 佔用較少的記憶體。