Closed Thread
Results 1 to 3 of 3

Funciton that Combines 3 or more Arrays

  1. #1
    ExcelMonkey
    Guest

    Funciton that Combines 3 or more Arrays

    Came across this function to combine arrays in this newsgroup (Sorry can't
    rememer who posted it). It takes two arrays as arguments and returns 1
    combined array. Works very well. Does anyone know if there is similar
    function around for 3 or more arrays. I was going build in the third array
    but realised I may need more than 3. Thanks and sorry for not crediting the
    author of the function.


    Function ArrayUnion(ByVal va1 As Variant, ByVal va2 As Variant) As Variant
    Dim i As Long, Upper As Long
    If TypeName(va1) = "Empty" Then
    va1 = va2
    Else
    Upper = UBound(va1)
    If LBound(va2) = 0 Then Upper = Upper + 1
    ReDim Preserve va1(LBound(va1) To UBound(va1) + UBound(va2) -
    LBound(va2) + 1)
    For i = LBound(va2) To UBound(va2)
    va1(Upper + i) = va2(i)
    Next i
    End If
    ArrayUnion = va1
    End Function

    Thanks

    EM

  2. #2
    Charlie
    Guest

    RE: Funciton that Combines 3 or more Arrays

    Can't you just call the function twice like this:

    ThreeArrays = ArrayUnion(ArrayUnion(Array1, Array2), Array3)

    "ExcelMonkey" wrote:

    > Came across this function to combine arrays in this newsgroup (Sorry can't
    > rememer who posted it). It takes two arrays as arguments and returns 1
    > combined array. Works very well. Does anyone know if there is similar
    > function around for 3 or more arrays. I was going build in the third array
    > but realised I may need more than 3. Thanks and sorry for not crediting the
    > author of the function.
    >
    >
    > Function ArrayUnion(ByVal va1 As Variant, ByVal va2 As Variant) As Variant
    > Dim i As Long, Upper As Long
    > If TypeName(va1) = "Empty" Then
    > va1 = va2
    > Else
    > Upper = UBound(va1)
    > If LBound(va2) = 0 Then Upper = Upper + 1
    > ReDim Preserve va1(LBound(va1) To UBound(va1) + UBound(va2) -
    > LBound(va2) + 1)
    > For i = LBound(va2) To UBound(va2)
    > va1(Upper + i) = va2(i)
    > Next i
    > End If
    > ArrayUnion = va1
    > End Function
    >
    > Thanks
    >
    > EM


  3. #3
    ExcelMonkey
    Guest

    RE: Funciton that Combines 3 or more Arrays

    Thats worth looking into. Hadn't thought of that. Thanks

    "Charlie" wrote:

    > Can't you just call the function twice like this:
    >
    > ThreeArrays = ArrayUnion(ArrayUnion(Array1, Array2), Array3)
    >
    > "ExcelMonkey" wrote:
    >
    > > Came across this function to combine arrays in this newsgroup (Sorry can't
    > > rememer who posted it). It takes two arrays as arguments and returns 1
    > > combined array. Works very well. Does anyone know if there is similar
    > > function around for 3 or more arrays. I was going build in the third array
    > > but realised I may need more than 3. Thanks and sorry for not crediting the
    > > author of the function.
    > >
    > >
    > > Function ArrayUnion(ByVal va1 As Variant, ByVal va2 As Variant) As Variant
    > > Dim i As Long, Upper As Long
    > > If TypeName(va1) = "Empty" Then
    > > va1 = va2
    > > Else
    > > Upper = UBound(va1)
    > > If LBound(va2) = 0 Then Upper = Upper + 1
    > > ReDim Preserve va1(LBound(va1) To UBound(va1) + UBound(va2) -
    > > LBound(va2) + 1)
    > > For i = LBound(va2) To UBound(va2)
    > > va1(Upper + i) = va2(i)
    > > Next i
    > > End If
    > > ArrayUnion = va1
    > > End Function
    > >
    > > Thanks
    > >
    > > EM


Closed Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1