Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Annnie
0 / 0 / 0
Регистрация: 19.12.2014
Сообщений: 12
1

VBA. отсортировать слова в порядке возрастания их длины

15.05.2013, 15:06. Просмотров 1091. Ответов 2
Метки нет (Все метки)

помогите, пожалуйста!!!
нужно отсортировать слова в порядке возрастания их длины, но при этом использовать selection. я искала в интернете, но там везде функции типа Ubond и т.д., которые мы не проходили
я сделала так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Sub bbb()
Dim kol, i, j, poz As Integer
Dim c As String
Dim a() As Integer '  здесь хранятся длины
Dim b() As String '  здесь - сами слова
 
Selection.Start = 0
Selection.End = 0
Selection.Extend (".")
poz = Selection.End
For i = 0 To poz
Selection.Start = i
Selection.End = i + 1
If (Selection.Text = " ") Then kol = kol + 1
Selection.Start = Selection.End
Next i
MsgBox "слов " & kol '  нашли кол-во слов
 
ReDim a(kol)
ReDim b(kol)
Selection.Start = 0
Selection.End = 0
 
For i = 1 To kol - 1
Selection.Expand (wdWord)
a(i) = Len(Selection.Text) - 1
b(i) = Selection.Text
Selection.Start = Selection.End
MsgBox b(i) & a(i)
Next i
 
' это последнее слово с точкой:
Selection.Expand (wdWord)
a(kol) = Len(Selection.Text)
b(kol) = Selection.Text
Selection.Start = Selection.End
MsgBox b(kol) & a(kol)
 
For j = 1 To kol
For i = 1 To kol - j
If (a(i) > a(i + 1)) Then
c = b(i)
b(i) = b(i + 1)
b(i + 1) = c
End If
Next i
Next j ' поменяли, но неправильно :(
 
Selection.Start = 0
Selection.End = 0
Selection.Move (wdSentence)
Selection.Start = Selection.End
Selection.Text = " "
 
' вывод:
For i = 1 To kol
Selection.Text = CStr(b(i))
Selection.Start = Selection.End
Selection.Text = " "
Selection.Start = Selection.End
Next i
 
 
End Sub

если просто выводить длины слов, то сортировка идет правильно
если сортировать именно слова - то не так, как надо
грешу на то, что индексы у b(i) и a(i) одинаковые, и что-то может путаться
надо срочно
по идее, это простая задача, но я никак не допру
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 15:06
Ответы с готовыми решениями:

Как разбить строку на отдельные слова и вывести их в столбец А активного рабочего листа в порядке возрастания их длины
Дана строка символов,разделенных пробелами.Разбить строку на отдельные слова и вывести их в столбец...

Как отсортировать диапазон ячеек (таблицы, данных) со случайными цифрами в порядке возрастания?
Я думал, что Microsoft Excel 2016 может подобное, уже какой выпуск выпускают, а такой важной...

Расположить слова строки в порядке возрастания их длин
Расположить слова строки в порядке возрастания их длин. На языке Vba, помогите срочно!!!

Расположить слова в порядке убывания их длины в предложении
всем добрый вечер!! Уважаемые форумчане,помогите пожалуйста решить,а точнее дорешать...

Отсортировать серии в массиве в порядке возрастания их длины
Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке возрастания их...

2
Казанский
14901 / 6305 / 1718
Регистрация: 24.09.2011
Сообщений: 9,977
15.05.2013, 15:34 2
Annnie, приложите документ с исходными данными. В нем же покажите, что должно получиться.
(Расширенный режим - Управление вложениями).

Добавлено через 12 минут
В общем, понятно. При сортировке надо переставлять элементы обоих массивов. Строки 40-48:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
For j = 1 To kol
    For i = 1 To kol - j
        If a(i) > a(i + 1) Then
            poz = a(i)
            a(i) = a(i + 1)
            a(i + 1) = poz
            
            c = b(i)
            b(i) = b(i + 1)
            b(i + 1) = c
        End If
    Next i
Next j
Последнее слово не попадает в массив - разбирайтесь...
1
Annnie
0 / 0 / 0
Регистрация: 19.12.2014
Сообщений: 12
15.05.2013, 18:50 3
спасибо огромное! все работает!! и последнее слово, кстати, тоже - разные варианты предложений подставляла)
а без вас бы еще фиг знает сколько мучилась :3
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 18:50

Как отсортировать строки файла в порядке возрастания их длины
Помогите решить задачу!!!!!! Дан файл со строками, отсортировать строки в порядке возрастания их...

Как отсортировать строки файла в порядке возрастания их длины
Помогите решить задачу!!!!!! Дан файл со строками, отсортировать строки в порядке возрастания их...

Распечатать слова, из которых состоит предложение, в порядке возрастания длины слова
помогите реализовать это на перле) из темы "разработка cgi-програм на perl" собственно:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru