Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Function To Combine two 3-D arrays
I have a function to combine two 3d arrays. Is there a more efficient way to do this than the code below? Note: there's a complication: The 3rd dimension includes a price. When combining the arrays, if the 1st and 2nd dimension in both arrays match, and only then, the 3rd dimensions are added together. Thanks, Darren Function Combine3DArrays(arr1 As Variant, arr2 As Variant) As Variant Dim i As Integer, j As Integer, k As Integer Dim arrNew As Variant For i = LBound(arr1, 2) To UBound(arr1, 2) For j = LBound(arr2, 2) To UBound(arr2, 2) If arr1(1, i) = arr2(1, j) And arr1(2, i) = arr2(2, j) Then arr1(3, i) = arr1(3, i) + arr2(3, j) arr2(1, j) = vbNullString arr2(2, j) = vbNullString arr2(3, j) = 0 End If Next j Next i For j = LBound(arr2, 2) To UBound(arr2, 2) If arr2(1, j) < vbNullString Then ReDim Preserve arr1(LBound(arr1, 2) To UBound(arr1, 2) + 1) arr1(1, UBound(arr1, 2)) = arr2(1, j) arr1(2, UBound(arr1, 2)) = arr2(2, j) arr1(3, UBound(arr1, 2)) = arr2(3, j) End If Next j Combine3DArrays = arr1 End Function |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Function To Combine two 3-D arrays
Darren Hill wrote:
I have a function to combine two 3d arrays. Is there a more efficient way to do this than the code below? Note: there's a complication: The 3rd dimension includes a price. When combining the arrays, if the 1st and 2nd dimension in both arrays match, and only then, the 3rd dimensions are added together. Thanks, Darren Function Combine3DArrays(arr1 As Variant, arr2 As Variant) As Variant Dim i As Integer, j As Integer, k As Integer Dim arrNew As Variant For i = LBound(arr1, 2) To UBound(arr1, 2) For j = LBound(arr2, 2) To UBound(arr2, 2) If arr1(1, i) = arr2(1, j) And arr1(2, i) = arr2(2, j) Then arr1(3, i) = arr1(3, i) + arr2(3, j) arr2(1, j) = vbNullString arr2(2, j) = vbNullString arr2(3, j) = 0 End If Next j Next i For j = LBound(arr2, 2) To UBound(arr2, 2) If arr2(1, j) < vbNullString Then ReDim Preserve arr1(LBound(arr1, 2) To UBound(arr1, 2) + 1) arr1(1, UBound(arr1, 2)) = arr2(1, j) arr1(2, UBound(arr1, 2)) = arr2(2, j) arr1(3, UBound(arr1, 2)) = arr2(3, j) End If Next j Combine3DArrays = arr1 End Function The above doesn't seem to have anything to do with 3-d arrays, only 2-D; no reference to an array element includes 3 index numbers. Why is the variable k declared? It is not used. Why is the variable ArrNew declared? It is not used. What's up??? Alan Beban |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Function To Combine two 3-D arrays
Alan Beban wrote:
Darren Hill wrote: I have a function to combine two 3d arrays. Is there a more efficient way to do this than the code below? Note: there's a complication: The 3rd dimension includes a price. When combining the arrays, if the 1st and 2nd dimension in both arrays match, and only then, the 3rd dimensions are added together. Thanks, Darren Function Combine3DArrays(arr1 As Variant, arr2 As Variant) As Variant Dim i As Integer, j As Integer, k As Integer Dim arrNew As Variant For i = LBound(arr1, 2) To UBound(arr1, 2) For j = LBound(arr2, 2) To UBound(arr2, 2) If arr1(1, i) = arr2(1, j) And arr1(2, i) = arr2(2, j) Then arr1(3, i) = arr1(3, i) + arr2(3, j) arr2(1, j) = vbNullString arr2(2, j) = vbNullString arr2(3, j) = 0 End If Next j Next i For j = LBound(arr2, 2) To UBound(arr2, 2) If arr2(1, j) < vbNullString Then ReDim Preserve arr1(LBound(arr1, 2) To UBound(arr1, 2) + 1) arr1(1, UBound(arr1, 2)) = arr2(1, j) arr1(2, UBound(arr1, 2)) = arr2(2, j) arr1(3, UBound(arr1, 2)) = arr2(3, j) End If Next j Combine3DArrays = arr1 End Function The above doesn't seem to have anything to do with 3-d arrays, only 2-D; no reference to an array element includes 3 index numbers. Why is the variable k declared? It is not used. Why is the variable ArrNew declared? It is not used. What's up??? Alan Beban Oops, you're right: it's a 2D array with three elements in the first array. That'll teach me to post when I'm suffering from looking-at-code-too-long fatigue :) The k variable and arrnew are there because I originally planned to move the two arrays into a third array and thought I might need them. Then I realised I could stick with the original arr1. I should have removed them. Darren |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Combine Two Arrays Into One. Tough. | Excel Worksheet Functions | |||
How to combine Combo Box function with Vlookup function | Excel Worksheet Functions | |||
Combine Two Similar Arrays | Excel Worksheet Functions | |||
how to combine an IF Function with a lookup function to determine | Excel Worksheet Functions | |||
Working with Arrays, pasing from function to function | Excel Programming |