Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Is there a quick way to sort a single dimensional array? Multi-dimensional
array? Thanks. Bernie |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Bernie,
Stephen Bullen has a good collection of QuickSort routines: http://www.bmsltd.co.uk/Excel/SBXLPage.asp#VBA Rob "B Tuohy" wrote in message ... Is there a quick way to sort a single dimensional array? Multi-dimensional array? Thanks. Bernie |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
http://support.microsoft.com/default...17&Product=vb6
HOWTO: Sort Algorithms for Numeric Arrays Here is some code I have modified to do it. The second procedure shows how to call the quicksort. Sub QuickSort(SortArray, col, L, R, bAscending) ' 'Originally Posted by Jim Rech 10/20/98 Excel.Programming 'Modified to sort on first column of a two dimensional array 'Modified to handle a second dimension greater than 1 (or zero) 'Modified to sort on a specified column in a 2D array 'Modified to do Ascending or Descending Dim i, j, X, Y, mm i = L j = R X = SortArray((L + R) / 2, col) If bAscending Then While (i <= j) While (SortArray(i, col) < X And i < R) i = i + 1 Wend While (X < SortArray(j, col) And j L) j = j - 1 Wend If (i <= j) Then For mm = LBound(SortArray, 2) To UBound(SortArray, 2) Y = SortArray(i, mm) SortArray(i, mm) = SortArray(j, mm) SortArray(j, mm) = Y Next mm i = i + 1 j = j - 1 End If Wend Else While (i <= j) While (SortArray(i, col) X And i < R) i = i + 1 Wend While (X SortArray(j, col) And j L) j = j - 1 Wend If (i <= j) Then For mm = LBound(SortArray, 2) To UBound(SortArray, 2) Y = SortArray(i, mm) SortArray(i, mm) = SortArray(j, mm) SortArray(j, mm) = Y Next mm i = i + 1 j = j - 1 End If Wend End If If (L < j) Then Call QuickSort(SortArray, col, L, j, bAscending) If (i < R) Then Call QuickSort(SortArray, col, i, R, bAscending) End Sub Sub aaTesterSort() Dim bAscending As Boolean Set rng = Range("I7").CurrentRegion vArr = rng.Value bAscending = False QuickSort vArr, 5, LBound(vArr, 1), UBound(vArr, 1), bAscending Range("I26").Resize(UBound(vArr, 1), UBound(vArr, 2)).Value = vArr End Sub -- Regards, Tom Ogilvy B Tuohy wrote in message ... Is there a quick way to sort a single dimensional array? Multi-dimensional array? Thanks. Bernie |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Bernie,
I found this thread before..there are many ways of sorting arrays. (As far as I saw, 1-D array only) http://www.visualbasicforum.com/t78889.html --- Message posted from http://www.ExcelForum.com/ |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Arrays | Excel Worksheet Functions | |||
Arrays | Setting up and Configuration of Excel | |||
List boxes, Arrays and Sorting | Excel Programming | |||
Arrays | Excel Programming | |||
VBA: Sorting arrays in hierarchichal data structu Help!!! | Excel Programming |