SAS888
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Pozitivchik Можно, например, так: Код: Sub Main() Dim Filename As String, txt As String, i As Long, j As Long, n As Integer, a(), arr, x Application.ScreenUpdating = False 'Получаем имя текстового файла. Filename = Application.GetOpenFilename(, , , "Выберите файл для обработки", "Открыть") If Filename = "" Then Exit Sub 'Задаем количество символов n = InputBox("Количество символов", "Поиск слов") 'Считываем весь файл в переменную txt. Set fso = CreateObject("scripting.filesystemobject") Set ts = fso.OpenTextFile(Filename, 1, True): txt = ts.ReadAll: ts.Close 'Убираем непечатные символы и лишние пробелы. txt = Replace(txt, Chr(10), " "): txt = Replace(txt, Chr(13), " "): txt = Application.Trim(txt) 'Формируем массив всех слов. arr = Split(txt, " "): ReDim a(1 To UBound(arr) + 1): j = 0 'Выбираем в другой массив все слова длиной в n символов. For i = LBound(arr) To UBound(arr) If Len(arr(i)) = n Then j = j + 1: a(j) = arr(i) End If: Next If j = 0 Then Exit Sub Else ReDim Preserve a(1 To j) 'Сортируем массив For i = LBound(a) To UBound(a) - 1 For j = i + 1 To UBound(a) If a(i) > a(j) Then x = a(i): a(i) = a(j): a(j) = x End If: Next: Next 'Выводим результат в столбец "A". Range([A1], Cells(UBound(a), 1)).Value = Application.Transpose(a) End Sub | Устроит? Пример файла нужен? | Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 07:01 03-11-2009 | Исправлено: SAS888, 07:20 03-11-2009 |
|