将范围传递给函数的Excel
问题描述:
如何将一系列单元格传递给函数以便可以分别处理这些项目。因此,如何将一系列单元格传递给函数。将范围传递给函数的Excel
我试图做到这一点,所以我可以有一个使用遵循
Function processNumbers(Var as Range)
从这个我不知道我怎样才能在列表中的项目数的方法和横向排列编辑内容。有没有比上述更好的方式引入项目。
答
您声明的函数是正确的方法。
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
谢谢,但你是什么意思'不会在UDF工作'。 当我做processNumbers = Dat而不是Val = Dat时,我只返回一个单元而不是完整的修改列表。即我在传递a1:e1并在A3中输入公式,但我不会在A3:E3中返回值,但只能在A3中返回。 – Michaelb88 2011-12-29 13:28:20
当一个函数被称为用户定义函数或UDF的单元格中的公式调用时。当像这样调用时,它不能更改工作表中的单元格,只返回一个值。 – 2011-12-29 13:31:45
要将值返回到像A3:E3这样的范围,请以数组公式的形式输入函数:选择范围A3:E3,输入您的函数并按下Ctrl-Shift-Enter(而不是Enter)结果应该是公式栏中显示的公式应该看起来像'{= processNumbers(...)}' – 2011-12-29 13:35:09