2016-09-29 2 views
0

Например, одна клетка у меня имеет значение:Функция/Формула, которая сортирует запятыми список по алфавиту/по возрастанию

1133,1131,1141,1142,1143,1151,1132,1181 

Как получить это происходит в порядке возрастания?

1131,1132,1133,1141,1142,1143,1151,1181 

Делать это работать с большим количеством различных вещей, так что в надежде найти формулу или функцию Vba приводимого решения.

ответ

2
Option Explicit 

Function sortingHat(str As String, _ 
        Optional delim As String = ",") 
    Dim a As Long, b As Long, arr As Variant, tmp As Variant 

    'split the string into an array 
    arr = Split(str, delim) 

    'sort the array 
    For a = LBound(arr) To UBound(arr) - 1 
     For b = a + 1 To UBound(arr) 
      If arr(b) < arr(a) Then 
       tmp = arr(a) 
       arr(a) = arr(b) 
       arr(b) = tmp 
      End If 
     Next b 
    Next a 

    'join the array into a string 
    sortingHat = Join(arr, delim) 
End Function 

sortingHat

+0

LOL - имя функции само по себе стоит поднять итоги голосования. – Comintern

0

Рассмотрим:

Function MySort(txt As String, Sep As String) As String 

    Dim a 

    With CreateObject("System.Collections.ArrayList") 
     For Each a In Split(txt, Sep) 
      .Add Trim$(CStr(a)) 
     Next 
     .Sort 
     MySort = Join(.ToArray, Sep) 
    End With 
End Function 

enter image description here

Примечание:

В соответствии с просьбой в заголовке, функция выполняет алфавитный сортировка, а не численный вид.

Смежные вопросы