Excel VBA 自訂函數 傳入儲存格參數

 為了解決一個有1000個欄位的判斷問題,所以使用自訂函數來自動判斷。

但是自訂函數又遇到了另一個問題,也就是沒有辦法自動加號,先看程式碼如下:

Function test01(aa, bb)

   a = Cells(aa, bb).Value

   test01 = a

End Function

程式碼很簡單,只是如果單純傳入欄號、列號時,下一列無法自動加號,如下圖

(為了顯示公式,所以直接轉成文字)


由上圖可知,公式都是(1,1),而不會自動變成(1,2),(1,3),這樣對於一個有數百列的Excel,要一個一個手動改實在太麻煩了。

還好最後有試出一個方法可以解決這個問題,就是利用標準的公式column與row,這樣終於可以解決問題了。


公式說明如下:
Column是傳回參照位址欄之編號,如COLUMN(B1)傳回2,也就是欄B
Row是傳回參照位址列之編號,如ROW(C2)傳回2,也就是第二列

用這兩個公式就可以將儲存格的參照位址傳入VBA,並享受自動加號的功能。