Мне интересно, есть ли способ сортировки значений, разделенных запятой внутри ячейки в Microsoft Excel. Например, у меня есть ячейка с надписью «49, 11», и я бы хотел, чтобы она читала «11, 49». Есть идеи?
2 ответа
2
Рассмотрим следующую пользовательскую функцию :
Public Function CellSort(r As Range) As String
Dim bry() As Long, L As Long, U As Long
ch = r(1).Text
ary = Split(ch, ",")
L = LBound(ary)
U = UBound(ary)
ReDim bry(L To U)
For i = LBound(ary) To UBound(ary)
bry(i) = CLng(ary(i))
Next i
Call BubbleSort(bry)
For i = LBound(bry) To UBound(bry)
ary(i) = CStr(bry(i))
Next i
CellSort = Join(ary, ",")
End Function
Sub BubbleSort(arr)
Dim strTemp As Variant
Dim i As Long
Dim j As Long
Dim lngMin As Long
Dim lngMax As Long
lngMin = LBound(arr)
lngMax = UBound(arr)
For i = lngMin To lngMax - 1
For j = i + 1 To lngMax
If arr(i) > arr(j) Then
strTemp = arr(i)
arr(i) = arr(j)
arr(j) = strTemp
End If
Next j
Next i
End Sub
1
Функция сортировки Excel работает со всеми ячейками. Для сортировки внутри ячейки вам понадобится скрипт VB. Вы можете разбить содержимое ячеек на столбцы, используя Text To Columns, а затем сортировать (слева направо).