Страницы: 1
RSS
Сортировка чисел в текстовой строке по убыванию. Числа находятся внутри слов.
 
Здравствуйте.

Есть такая проблема.
В ячейке находится текст, посередине каждого слова в этом тексте - находится цифра.
Эти слова объединены значками "+".
Вопрос в том, что числа - неодинаковые: какое-то больше, какое-то меньше.

Как макросом - отсортировать этот текст с числами ?
(То есть в текстовой строке - сперва поставить те слова, в которых число больше, а затем расставить остальные слова по-убыванию чисел в них)
Изменено: RagnarLodbrokovitch - 13.05.2018 13:23:07
 
Цитата
Как макросом - отсортировать этот текст с числами ?
Код
Sub iSortDigit()
Dim mo As Object
Dim n As Integer
Dim i As Long
 With CreateObject("VBScript.RegExp")
   .Global = True
   .IgnoreCase = True
   .MultiLine = True
   .Pattern = "[а-я]+(\d)[а-я]+"
     If .test(Cells(16, 5)) Then
       Set mo = .Execute(Cells(16, 5))
         For n = 0 To mo.Count - 1
           Cells(16 + n, 10) = mo(n).SubMatches(0)
           Cells(16 + n, 11) = mo(n)
         Next
         Range(Cells(16, 10), Cells(16 + n - 1, 11)).Sort Key1:=Cells(16, 10), _
                                                Order1:=xlDescending, Header:=xlNo
         Range("E22") = Join(Application.Transpose(Range(Cells(16, 11), Cells(16 + n - 1, 11))), "+")
         Range(Cells(16, 10), Cells(16 + n - 1, 11)).ClearContents
    End If
 End With
End Sub
Изменено: Kuzmich - 13.05.2018 13:55:45
 
Kuzmich, спасибо - все работает.
Страницы: 1
Наверх