I'm trying to
- pass two ranges - several rows of one column - to a user-defined function in Excel 2007,
- then assign it to the array for processing.
Can someone tell me how to assign such a range to an array?
The range is not constant, since I use UDF in different cells for different data, so I can not use e, g, Range("A1:A10")
The code works when I just use Data1.Rows.Cells(i, 1) instead of arrays. But I think it's better to use one-dimensional arrays to increase efficiency.
Here is my current code
Function Sample(Data1 As Range, Data2 As Range) As Double 'Size of Data1 and Data2 Dim rows As Integer rows = Data1.Rows.Count 'Declaring two one dimensional arrays Dim data1Array(rows) As Double --- Getting error here Dim data2Array(rows) As Double --- Getting error here Dim diff As Double Dim average As Double Dim i As Integer 'Assigning Range to Array data1Array = Data1 --- Getting Error here data2Array = Data2 --- Getting Error here average = 0 diff = 0 For i = 1 To rows diff = data1Array(i) - data2Array(i) If diff < 0 Then diff = diff * -1 End If average = diff + average Next i Sample = average/rows End Function
source share