Solved

How can I convert a 1D array into a 2d array

Posted on 2011-03-18
8
2,480 Views
Last Modified: 2012-05-11
I have an one dimensional array of comma delited values.  Does any know in VBA how I would turn this into a 2 dimensional array?

So if I have
arry(1)="a,b,c"
arry(2)="x,4,3"

I need it to be

arry(1,1)="a"
arry(1,2)="b"
arry(1,3)="c"

arry(2,1)="x"
arry(2,2)="4"
arry(2,3)="3"

I tried using split and a For loop but nothing seems to work.?
0
Comment
Question by:drhamel69
8 Comments
 
LVL 22

Expert Comment

by:plusone3055
ID: 35168026
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 35168093
Try this:
Dim arry(2) As String
Dim target(,) As String

arry(0) = "alpha,beta,gamma"
arry(1) = "a,b,c"
arry(2) = "x,4,3"

For i As Integer = 0 To arry.Length - 1
    Dim parts() As String = arry(i).Split(","c)

    ReDim Preserve target(arry.Length - 1, parts.Length - 1)

    For j As Integer = 0 To parts.Length - 1
        target(i, j) = parts(j)
    Next
Next

Open in new window

0
 
LVL 75

Accepted Solution

by:
käµfm³d   👽 earned 500 total points
ID: 35168110
Sorry...  that was .NET. This should be VBA friendly  : )
Dim arry(2) As String
Dim target(,) As String

arry(0) = "alpha,beta,gamma"
arry(1) = "a,b,c"
arry(2) = "x,4,3"

For i As Integer = 0 To arry.Length - 1
    Dim parts() As String = Split(arry(i), ",")

    ReDim Preserve target(UBound(arry), UBound(parts))

    For j As Integer = 0 To parts.Length - 1
        target(i, j) = parts(j)
    Next
Next

Open in new window

0
Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 35168118
*Ugh*

Change line 13 to:
For j = 0 To UBound(parts)

Open in new window

0
 
LVL 44

Expert Comment

by:GRayL
ID: 35168359
You need a module in which you set the option base to 1

Option Base 1

'code here that creates the one dimension array Arry()

Dim Arry2D (3,2) as Variant, i as integer, j as integer

For i = 1 to 2
  For j = 1 to 3
    Arry2D(i,j) = Split Arry(i)(j)
  Next j
Next i
0
 
LVL 27

Expert Comment

by:Ark
ID: 35502568
One line of code :) 'OK, 2 lines with Dim

'Note - to access arrNew items, use arrNew(i)(j) instead of arrNew(i,j) like:
    Dim i, j
    For i = 0 To 1
        For j = 0 To 2
            Debug.Print i; ","; j, arrNew(i)(j)
        Next j
    Next i
Dim arrNew As Variant
arrNew = Array(Split(arry1(1), ","), Split(arry1(2), ","))

Open in new window

0
 
LVL 100

Expert Comment

by:mlmcc
ID: 35688056
This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.
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

If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Describes a method of obtaining an object variable to an already running instance of Microsoft Access so that it can be controlled via automation.
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
In Microsoft Access, learn how to “cascade” or have the displayed data of one combo control depend upon what’s entered in another. Base the dependent combo on a query for its row source: Add a reference to the first combo on the form as criteria i…

920 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

14 Experts available now in Live!

Get 1:1 Help Now