2011-12-29 120 views
2

如何將一系列單元格傳遞給函數以便可以分別處理這些項目。因此,如何將一系列單元格傳遞給函數。將範圍傳遞給函數的Excel

我試圖做到這一點,所以我可以有一個使用遵循

Function processNumbers(Var as Range) 

從這個我不知道我怎樣才能在列表中的項目數的方法和橫向排列編輯內容。有沒有比上述更好的方式引入項目。

回答

2

您聲明的函數是正確的方法。

Function processNumbers(Var as Range) As Variant 
    NumberOfCells = Var.Cells.Count 
    NumberOfRows = Var.Rows.Count 
    NumberOfColumns = Var.Columns.Count 
    RangeAddress = Var.Address 

    ' Iterate the range (slow) 
    For Each Cl in Var.Cells 
     ' ... 
    Next 

    ' Get Values from range as an array 
    Dim Dat as variant 
    Dat = var 

    ' Iterate array 
    For rw = LBound(Dat,1) to UBound(Dat,1) 
     For col = LBound(Dat,2) to UBound(Dat,2) 
      ' reference Dat(rw,col) 
     Next col 
    Nest rw 

    ' Put (modified) values back into range. Note: won't work in a UDF 
    Val = Dat 
End Function 
+0

謝謝,但你是什麼意思'不會在UDF工作'。 當我做processNumbers = Dat而不是Val = Dat時,我只返回一個單元而不是完整的修改列表。即我在傳遞a1:e1並在A3中輸入公式,但我不會在A3:E3中返回值,但只能在A3中返回。 – Michaelb88 2011-12-29 13:28:20

+0

當一個函數被稱爲用戶定義函數或UDF的單元格中的公式調用時。當像這樣調用時,它不能更改工作表中的單元格,只返回一個值。 – 2011-12-29 13:31:45

+0

要將值返回到像A3:E3這樣的範圍,請以數組公式的形式輸入函數:選擇範圍A3:E3,輸入您的函數並按下Ctrl-Shift-Enter(而不是Enter)結果應該是公式欄中顯示的公式應該看起來像'{= processNumbers(...)}' – 2011-12-29 13:35:09

相關問題