我有一個需求是將某欄的資料複製到其他地方, 但是希望能夠是按照大小排列, 並且過濾掉重複的資料 我先做一個測試, 如果我在A1輸入自訂函數(MyCopy), 去改變B1儲存格的內容 : Function MyCopy() As Variant Cells(1, 2).Value = "AA" MyCopy = "OK" End Function 結果是 #VALUE! (失敗), 再將程式修改一下, 在A1中輸入 =MyCopy(B1), 把B1當參數傳進去會怎樣 Function MyCopy(myRange As Range) As Variant myRange.Value = "AA" MyCopy = "OK" End Function 結果依然是 #VALUE! (失敗), 只好爬文看看別人的作法, 爬了很久直到這篇文章( How to Change Another Cell with a VBA Function ), 作者的技巧是用 Evaluate 函數來叫另一個自訂函數來幫忙修改其他儲存格的資料, 看來自訂函數果真無法直接修改其他儲存格的資料了!(如果有其他作法也歡迎留言告知喔), 程式再改一下測測看 Function MyCopy() As Variant Evaluate "MyChange(B1,100)" MyCopy = "OK" End Function Function MyChange(myRange As Range, newData As Variant) myRange.Value = newData End Function 我在A1儲存格中輸入 =MyCopy(), 結果對了!!(附上圖慶祝一下) 再來是排序問題, 網路上作法很多, 最後我挑了 System.Collections.SortedList 這個物件, 程式如下 : Function MyCopy(copyFrom As Range, copyTo As Range) As Variant Dim mList As Object D...