Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2016, 05:49   #21
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Старая сказка на новый лад

Код:
Sub RusLettersEngLetters() 'подсчёт и сегрегация символов в активном документе Word
Const ta = vbTab & vbTab, pa = vbCr & vbCr
Dim ch, rus As Long, eng As Long, oth As Long, all As Long, t As Single: t = Timer

For Each ch In ActiveDocument.Characters
'    If ch Like "[А-яЁё]" Then rus = rus + 1      'счётчик русских букв
'    If ch Like "[A-Za-z]" Then eng = eng + 1     'счётчик нерусских букв
'    If ch Like "[!A-zА-яЁё]" Then oth = oth + 1  'счётчик прочих знаков текста документа
    Select Case True
        Case ch Like "[А-яЁё]": rus = rus + 1   'счётчик русских букв
        Case ch Like "[A-Za-z]": eng = eng + 1  'счётчик нерусских букв
        Case Else: oth = oth + 1 'счётчик прочих знаков текста документа
    End Select
Next

all = ActiveDocument.ComputeStatistics(wdStatisticCharactersWithSpaces): t = Timer - t

MsgBox "Итак, в тексте " & ActiveDocument & ":" & pa & _
    "• русских букв:" & ta & ta & Format(rus, "#,#") & vbCr & _
    "• английских букв:" & ta & ta & Format(eng, "#,#") & vbCr & _
    "• всего русских и английских букв:" & ta & Format(rus + eng, "#,#") & vbCr & _
    "• прочих символов:" & String(3, Chr(9)) & Format(oth, "#,#") & pa & _
    "Всего символов по статистике Word:" & ta & Format(all, "#,#") & pa & _
"Время подсчёта, с: " & ta & Format(t, "#,##0.0") & "," & vbCr & "что составило " & _
    Format(t / all, "0.000 000") & " с/символ"
End Sub
Цитата:
Сообщение от Stilet Посмотреть сообщение
Хы... Правда скорость не измерял...
А я вот измерил — c if’ами (что выше закомментировал) и с case’ами:
Изображения
Тип файла: jpg 2016-07-09_05-42_Миллион_о_миллионе.jpg (71.0 Кб, 148 просмотров)
Тип файла: jpg 2016-07-09_16-05 CASE vs IF.jpg (68.4 Кб, 138 просмотров)

Последний раз редактировалось Sasha_Smirnov; 09.07.2016 в 16:14.
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подсчитать количество букв а в строке Оксана33 Общие вопросы по Java, Java SE, Kotlin 1 24.09.2015 15:59
C# Подсчитать количество согласных букв SmailikEKB Помощь студентам 1 17.05.2013 23:02
Подсчитать количество введенных букв WebbMan Паскаль, Turbo Pascal, PascalABC.NET 10 01.04.2011 17:20
Подсчитать количество букв "А" в предложении и общее количество букв.В тексте из файла несколько строк. kvas91 Общие вопросы C/C++ 3 14.11.2010 16:51
Подсчитать количество слов и количество букв MDSIQ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.11.2010 16:57