Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default How do a sort a multidimensional array(1000,2) in Excel-VBA?

I have a 2 column array of numerical entries in VBA that I want to sort
lowest to highest by the first column (i.e. I still want to retain the links
between the values in the first and second columns, just like sorting a pair
of columns in a worksheet). I'd prefer not to have to move the numbers into
a worksheet to do this.
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,533
Default How do a sort a multidimensional array(1000,2) in Excel-VBA?


"DJMF" skrev i en meddelelse
...
I have a 2 column array of numerical entries in VBA that I want to sort
lowest to highest by the first column (i.e. I still want to retain the
links
between the values in the first and second columns, just like sorting a
pair
of columns in a worksheet). I'd prefer not to have to move the numbers
into
a worksheet to do this.


Hi

Try this code. Fit the array size to your needs.

Option Explicit

Option Base 1
Dim MyArray(10, 2)
Dim MyResultArray(10, 2)
Dim Largest As Double
Dim Smallest As Variant
Dim c As Integer, x As Integer
Dim Counter As Integer
Dim Pointer As Single
Dim CountTo As Double

Sub SortArray()
' Assign data to aray
For c = 1 To 10 ' Assign array
MyArray(c, 1) = Cells(c, 1).Value
MyArray(c, 2) = Cells(c, 2).Value
Next

CountTo = UBound(MyArray, 1)

' Sort Data in array
For c = 1 To CountTo
If MyArray(c, 1) Largest Then Largest = MyArray(c, 1) ' Largest value
in aray
Next
Smallest = Largest
For c = 1 To CountTo
If MyArray(c, 1) < Smallest Then Smallest = MyArray(c, 1) ' Lowest
value in aray
Next
Pointer = 1
Counter = Smallest
Do Until MyResultArray(CountTo, 1) = Largest
For c = 1 To UBound(MyArray, 1)
If MyArray(c, 1) = Smallest Then
MyResultArray(Pointer, 1) = MyArray(c, 1)
MyResultArray(Pointer, 2) = MyArray(c, 2)
MyArray(c, 1) = True
Pointer = Pointer + 1
Smallest = Largest
For x = 1 To CountTo
If MyArray(x, 1) < True Then
If MyArray(x, 1) < Smallest Then Smallest = MyArray(x,
1)
End If
Next
End If
Next
Loop
End Sub

Regards,

Per


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 23
Default How do a sort a multidimensional array(1000,2) in Excel-VBA?

I am afraid of you have to find a code for sort (for example "bubble" sort),
but you can do also like this: in VBA code put the array in the first two
column of one new empty worksheet, then do sort in the worksheet and after
that take the contents of the worksheet column back into the VBA array.

Ivan

"DJMF" wrote in message
...
I have a 2 column array of numerical entries in VBA that I want to sort
lowest to highest by the first column (i.e. I still want to retain the
links
between the values in the first and second columns, just like sorting a
pair
of columns in a worksheet). I'd prefer not to have to move the numbers
into
a worksheet to do this.



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
multidimensional array Peter[_61_] Excel Programming 1 August 30th 07 05:34 PM
Sort MultiDimensional Array Mushi Excel Programming 1 August 2nd 06 05:34 AM
Referencing multidimensional array Jay Petrulis[_2_] Excel Programming 2 May 27th 05 02:23 AM
Multidimensional Array DavidMoeller Excel Programming 4 August 12th 04 08:12 PM
MAX of Multidimensional Array ZZZ Excel Programming 2 November 15th 03 03:32 PM


All times are GMT +1. The time now is 06:10 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"