✔ 最佳答案
1.可以加輔助欄嗎?
2.只有b1至e1四個cell嗎?
3.你是否想a1會隨b1至e1的改變出不同的答案?即有可能四個數都相同時,a1和其他四個cell都一樣。
2009-12-30 23:43:36 補充:
Sub abcd()
X = 1
[A1] = WorksheetFunction.Small(Range("B1:E1"), X)
For Y = 1 To 3
X = X + 1
If WorksheetFunction.Small(Range("B1:E1"), X - 1) <> WorksheetFunction.Small(Range("B1:E1"), X) Then
[A1] = [A1] & ", " & WorksheetFunction.Small(Range("B1:E1"), X)
End If
Next Y
End Sub
如只有 B1:E1 四個Cell,For Y = 1 to 3;
如有 n個 Cell, For Y = 1 to n-1。
所有格內一定要有數字,否則Error。
2009-12-30 23:55:09 補充:
一個 Cell 只能容納一千多個字母,如你的資料太多,超出的項目不能顯示。
2009-12-31 11:08:00 補充:
技術上大致沒問題,程式上加多一句Count(b1:iv1)告知做For的次數有可能解決問題,因我現在要工作,沒有Excel,遲一點答你,你也可以自已試試Small函數在試算表上遇有空白時的情況,可能你自已也解決到問題。
2009-12-31 22:33:44 補充:
因補充內容只限300字,不能全程式發表,請更改以下語句
1.在 Sub abcd()之下加這一句:
N = WorksheetFunction.CountA(Range("B1:IV1"))
2.把 For Y = 1 To 3 改為:
For Y = 1 To N - 1
3.把所有Range("B1:E1")改為:
Range("B1:IV1")
2009-12-31 22:39:50 補充:
以上程式可接受有空白儲存格,亦會由小至大排列。但不接受文字,因SMALL函數不能比較文字。如有文字,可看看「意見」中 (新田美香) 的發表;大膽講句,她可以說是這裏的權威!(老實說:新田的算式太深了,我未有能力吸收到,要花點時間研究!)
新田美香:我這程式有改善之處嗎? 懇請多多指教!
程式只屬很基本的VBA理論,到圖書館找本有關EXCEL VBA書看看吧!