Solved

Merge two 1D arrays into one 2D array

Posted on 2013-11-27
8
1,416 Views
Last Modified: 2013-12-01
Is it possible to merge two one dimensional arrays into one two dimensional array using VBA?

For example's sake:
arrSource1 = Jack, Rebbeca, John
arrSource2 = Fredrick, Larson, Higgins

arrDestination:
arrDestination(0, 0) = Jack, Fredrick
arrDestination(1, 1) = Rebbeca, Larson
arrDestination(2, 2) = John, Higgins
0
Comment
Question by:MacroShadow
  • 4
  • 2
  • 2
8 Comments
 
LVL 34

Expert Comment

by:Dan Craciun
ID: 39682887
for i = 0 to arrsource1.length-1
    arrdestination(i, i) = arrsource1(i) & arrSource2(i)
next
0
 
LVL 27

Author Comment

by:MacroShadow
ID: 39682924
Thanks Dan, you got me going in the right direction.

Sub Test()
    Dim i As Integer
    Dim arrSource1() As String, arrSource2() As String

    arrSource1 = Split("Jack,Rebbeca,John", ",")
    arrSource2 = Split("Fredrick,Larson,Higgins", ",")
    
    ReDim arrDestination(0 To UBound(arrSource1), 0 To UBound(arrSource2))
    
    For i = 0 To UBound(arrDestination)
        arrDestination(i, i) = arrSource1(i) & arrSource2(i)
        Debug.Print arrDestination(i, i)
    Next
End Sub

Open in new window

0
 
LVL 34

Expert Comment

by:Dan Craciun
ID: 39682932
I really don't understand what you're trying to achieve.

Reserving space for your 2-dimensional array seems a bit wasteful, since you're using it as a 1-dimensional array anyway (you only use the diagonal, if you have a graphic representation).

You can simply use arrDestination(i) = arrSource1(i) & arrSource2(i)
0
 
LVL 27

Author Comment

by:MacroShadow
ID: 39683054
Sometimes I need an element from the first dimension, and sometimes an element from the second dimension, that's why I must keep the elements separate.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 34

Expert Comment

by:Dan Craciun
ID: 39683070
You can try a dictionary:

Dim dict As Dictionary
     
Set dict = New Dictionary

For i = 0 To UBound(arrSource1)
        dict.Add = arrSource1(i), arrSource2(i)
Next
0
 
LVL 76

Accepted Solution

by:
GrahamSkan earned 500 total points
ID: 39683182
The logical way to use a two dimensional array in this instance would be to use one index to differentiate between the fore and the family names, and the other the differentiate between individuals
Sub Test()
    Dim i As Integer
    Dim arrSource1() As String, arrSource2() As String

    arrSource1 = Split("Jack,Rebbeca,John", ",")
    arrSource2 = Split("Fredrick,Larson,Higgins", ",")

    'assuming that each source has the same number of names
    ReDim arrDestination(0 To 1, 0 To UBound(arrSource1))
    
    For i = 0 To UBound(arrDestination, 2)
        arrDestination(0, i) = arrSource1(i)
        arrDestination(1, i) = arrSource2(i)
        Debug.Print arrDestination(0, i), arrDestination(1, i)
    Next
End Sub

Open in new window

0
 
LVL 34

Expert Comment

by:Dan Craciun
ID: 39683193
@GrahamSkan: my brain is taking a break today.
I kept looking at the example and asking myself: why does he create a NXN table when he needs a dictionary?
It was obvious he needed to just create a 2XN table and be done :)
0
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 39683298
It's easy to get hold of the wrong end of the stick when it's presented that way.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
This video shows where to find the word count, how to display it, and what it breaks down to in Microsoft Word.
The viewer will learn how to use a discrete random variable to simulate the return on an investment over a period of years, create a Monte Carlo simulation using the discrete random variable, and create a graph to represent the possible returns over…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now