![]() |
Alphabetically reorder a text string with multiple words
Am trying to figure out if a user-defined function can be created to
alphabetically re-order a text with multiple words. For example. "Hotel Paris Hilton" should convert to "Hilton Hotel Paris" "Paris" is then the last word because "H" is before "P" in the alphabet "Hilton" is the first word because "i" is before "o" in the Alphabet and so on and so forth. For any help I would be really grateful. Thanks Mike |
Alphabetically reorder a text string with multiple words
I posted this message here earlier and also posted it to a microsoft site without fully realising that it is getting duplicated here and there ...... Sorry :-( Mike -- Grandslam90 ------------------------------------------------------------------------ Grandslam90's Profile: http://www.excelforum.com/member.php...o&userid=17408 View this thread: http://www.excelforum.com/showthread...hreadid=480087 |
Alphabetically reorder a text string with multiple words
Mike,
Copy the code below into a codemodule, and use the function like =ISort(A1) where A1 has your string to be re-ordered. HTH, Bernie MS Excel MVP Function ISort(inCell As Range) As String Dim myVals As Variant Dim i As Integer myVals = Split(inCell.Value, " ") BubbleSort myVals For i = LBound(myVals) To UBound(myVals) ISort = ISort & myVals(i) & " " Next i ISort = Trim(ISort) End Function Function BubbleSort(List As Variant) ' Sorts an array using bubble sort algorithm Dim First As Integer Dim Last As Integer Dim i As Integer Dim j As Integer Dim Temp As Variant First = LBound(List) Last = UBound(List) For i = First To Last - 1 For j = i + 1 To Last If List(i) List(j) Then Temp = List(j) List(j) = List(i) List(i) = Temp End If Next j Next i End Function "Mike S" <Mike wrote in message ... Am trying to figure out if a user-defined function can be created to alphabetically re-order a text with multiple words. For example. "Hotel Paris Hilton" should convert to "Hilton Hotel Paris" "Paris" is then the last word because "H" is before "P" in the alphabet "Hilton" is the first word because "i" is before "o" in the Alphabet and so on and so forth. For any help I would be really grateful. Thanks Mike |
Alphabetically reorder a text string with multiple words
|
Alphabetically reorder a text string with multiple words
"Mike S" <Mike wrote...
Am trying to figure out if a user-defined function can be created to alphabetically re-order a text with multiple words. For example. "Hotel Paris Hilton" should convert to "Hilton Hotel Paris" "Paris" is then the last word because "H" is before "P" in the alphabet "Hilton" is the first word because "i" is before "o" in the Alphabet and so on and so forth. Easiest way to do this would be to use add-in functions from Laurent Longre's MOREFUNC.XLL add-in, available from http://xcell05.free.fr/english/ If you install MOREFUNC.XLL, try the array formula =MCONCAT(VSORT(MID(A1,SMALL(IF(MID(" "&A1,INTVECTOR(1024,1),1)=" ",INTVECTOR(1024,1)), INTVECTOR(WORDCOUNT(A1),1)),SMALL(IF(MID(A1&" ",INTVECTOR(1024,1),1)=" ", INTVECTOR(1024,1)),INTVECTOR(WORDCOUNT(A1),1))-SMALL(IF(MID(" "&A1, INTVECTOR(1024,1),1)=" ",INTVECTOR(1024,1)),INTVECTOR(WORDCOUNT(A1),1))), ,1)," ") or use a defined name like seq referring to =ROW(INDIRECT("1:1024")), which would allow shortening the formula to =MCONCAT(VSORT(MID(A1,SMALL(IF(MID(" "&A1,seq,1)=" ",seq),INTVECTOR(WORDCOUNT(A1),1)), SMALL(IF(MID(A1&" ",seq,1)=" ",seq),INTVECTOR(WORDCOUNT(A1),1)) -SMALL(IF(MID(" "&A1,seq,1)=" ",seq),INTVECTOR(WORDCOUNT(A1),1))),,1)," ") |
All times are GMT +1. The time now is 10:00 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com