excel marco

2007-02-13 10:01 am
我想問下如果我想在一個column裡search下邊格有野
search完將有野個D cell 加埋一齊(cell的內容是text來的)
請問marco/vba要點寫呢?
其實唔用marco/vba寫得唔得呢?
更新1:

因為例如我想整 A B C abc company [email protected]; bca company 123 [email protected] 咁我想check如果B column邊個有野,例如check 到 B1 和 B3有野就將B1和B3個address加埋 請問點整呢?

更新2:

=Egroup(B1:B50,";",1) 在那裡打呢,如果我在excel其中一個cell打,唔得喎 佢出現#Name?

更新3:

得咗啦,謝謝呀! 其實可唔可以解釋下段code呢? 謝謝

更新4:

a = Space(Int(ss * Sgn(ss))) 這句其實沒有作用, 祇是怕用者輸入錯誤數值, 如 -1.5, 此句會將 -1.5變成 1 If IsEmpty(y) = False a, ss, y 為什麼不用define 呢( eg. int, double, float 個D 呢)?

回答 (2)

2007-02-14 8:25 am
✔ 最佳答案
方法 - 自製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 佔用較少的記憶體。
2007-02-13 11:37 am
You can try a combination of IF statement and IS function (e.g. ISTEXT)

Let's say column A has your text, you can write something like the following in the next column (e.g colume B):

If (istext(a1), a1, " ") =test if a1 is a text, it true, returns the value in a1 otherwise a space. Or similar If (istext(a1), 1, 0) where 1 indicates it is a text and 0 is not.

I dont understand why you want to add text? Text cannot be added like numeric. If you want to concatenate them, try & such as a1&a3 (e.g a1=apple, a3=orange) it will return you with appleorange, or a1&" and "&a3 = apple and orange.

Help it works for you.


收錄日期: 2021-05-03 12:18:14
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070213000051KK00298

檢視 Wayback Machine 備份