1

Тема: Сортировка чисел по возрастанию (убыванию)

На сайте http://wordexpert.ru/page/sortirovka-da … viewSource
админом был предложен макрос сортировки чисел по возрастанию (числа могли иметь ещё после себя буквы). К сожалению тот макрос годится только для чисел, состоящих из двух (и только!) цифр. Может кто-то может написать аналогичный макрос для сортировки чисел, состоящих из нескольких цифр (например, для чисел состоящих из одной, двух, трёх цифр одновременно)?

2

Re: Сортировка чисел по возрастанию (убыванию)

Рассмотрим числа -3, 0, 122, 3, 55, -7, 13, 53а, 6543, 617, 69, 69б, 6в, 73в, 723г, 735а, 75б, 79в,
Если расположить их в столбик, по абзацам, то тогда можно воспользоваться Сортировка текста по абзацам из Word 2010. Как видим сортируются числа, состоящих из нескольких цифр. Может кто-то знает: какой алгоритм расположения чисел по абзацам и возврат их в рядок, последовательность?

3

Re: Сортировка чисел по возрастанию (убыванию)

Следующий макрос вроде это делает

Sub ВозрастаниеЧисел()
'
' ВозрастаниеЧисел Макрос
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = ", "
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Sort ExcludeHeader:=False, FieldNumber:="абзацам", SortFieldType _
        :=wdSortFieldNumeric, SortOrder:=wdSortOrderAscending, FieldNumber2:="", _
        SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:=wdSortOrderAscending _
        , FieldNumber3:="", SortFieldType3:=wdSortFieldAlphanumeric, SortOrder3:= _
        wdSortOrderAscending, Separator:=wdSortSeparateByTabs, SortColumn:=False, _
         CaseSensitive:=False, LanguageID:=wdRussian, SubFieldNumber:="абзацам", _
        SubFieldNumber2:="абзацам", SubFieldNumber3:="абзацам"
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = ", "
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Отредактировано admin (20.09.2010 07:19:38)

4

Re: Сортировка чисел по возрастанию (убыванию)

Не могу только отучить макрос проверять только выделенную часть документа, а не весь документ.