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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2010, 13:11   #11
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Цитата:
Сообщение от Aent Посмотреть сообщение
Ну раз начали выкусывать миллисекунды...:

В нескольких тестах результат Letters3 был меньше 1 мс
Выигрыш впрочем идёт не за счёт Select а из-за
Ура-а! ещё на порядок ускорили! (как минимум на двоичный)

а ещё вот так:
Код:
    For i = 1 To ДлинаТекста
        Select Case Asc(Mid(strTemp, i, 1))
            Case 192 To 255, 184, 168 'а-Я'ё,Ё
                rus = rus + 1
            Case 97 To 122, 65 To 90
                eng = eng + 1
        End Select
    Next i
экономим ещё около миллисекунды
Нет нерешаемых задач - есть недостаток времени и данных!

Последний раз редактировалось Stilet; 13.05.2010 в 13:27.
Skif-F вне форума Ответить с цитированием
Старый 13.05.2010, 13:52   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хы... Я когда-то таким страдал:
Код:
Sub b()
 Dim s As String
 s = "привет hello мир"
 Dim a(2) As Integer
 Dim i As Long
 For i = 1 To Len(s)
   'a(1) = Asc(Mid(s, i, 1))
   a(CByte((Asc(Mid(s, i, 1)) > Asc("А") And 1))) = a(CByte((Asc(Mid(s, i, 1)) > Asc("А") And 1))) + 1
 Next i
 Debug.Print a(0), a(1)
End Sub
Правда скорость не измерял...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.05.2010, 14:14   #13
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Дорогой Stilet, Вы не учли возможность присутствия в тексте не буквенных символов, а скорость всё равно ниже, чем у программы из 11 сообщения
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 07.07.2016, 10:00   #14
Sdwjisa
Новичок
Джуниор
 
Регистрация: 07.07.2016
Сообщений: 3
По умолчанию

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

Последний раз редактировалось Sdwjisa; 07.07.2016 в 10:04.
Sdwjisa вне форума Ответить с цитированием
Старый 07.07.2016, 10:29   #15
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Sdwjisa Посмотреть сообщение
сори за ап такой темы. но сейчас интересует как подсчитать кол-во знаков русского языка в тексте где русский. английский и различные символы. некоторые макросы зависают просто
http://programmersforum.ru/showpost....7&postcount=11
пробовали?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 07.07.2016, 10:50   #16
Sdwjisa
Новичок
Джуниор
 
Регистрация: 07.07.2016
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
это весь текст макроса?
можете скинуть файлом пожалуйста а то я криворукий))
Sdwjisa вне форума Ответить с цитированием
Старый 07.07.2016, 10:56   #17
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Чем макросы с первой страницы не устраивают?
http://programmersforum.ru/showpost....88&postcount=7
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 07.07.2016, 11:26   #18
Sdwjisa
Новичок
Джуниор
 
Регистрация: 07.07.2016
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Чем макросы с первой страницы не устраивают?
http://programmersforum.ru/showpost....88&postcount=7
зависают на определенной странице
Sdwjisa вне форума Ответить с цитированием
Старый 07.07.2016, 12:16   #19
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

Код:
Sub RusLettersEngLetters2() 'подсчёт букв в документе (кроме сносок, надписей, колонтитулов и рисунков)'
Dim rus As Long, eng As Long, oth As Long, i As Long
Dim dt
dt = Timer
Dim c1 As Object, s1
For Each c1 In ActiveDocument.Range.Characters
    i = i + 1
    
    s1 = c1
    If s1 Like "[А-яЁё]" Then
    rus = rus + 1     'счётчик русских букв'
    ElseIf s1 Like "[A-z]" Then
    eng = eng + 1         'счётчик нерусских букв'
    Debug.Print i;
    Else
    oth = oth + 1 'счётчик прочих знаков текста документа'
    End If
    Next c1
Debug.Print
Debug.Print "В документе «" & ActiveDocument & "»"
Debug.Print "русских букв:", rus
Debug.Print "английских букв:", eng
Debug.Print "всего русских и английских букв:", rus + eng
Debug.Print "прочих символов:", oth
Debug.Print "символов по статистике Word:" & Chr(9) & ActiveDocument.ComputeStatistics(wdStatisticCharactersWithSpaces)
Debug.Print (dt - Timer) \ 1, "sec"
''==============================================================
''расчет по топику 2 занял бы 120 мин(сняла, не хватило терпения)
''по топику 6(find) --43 сек
''------------------------перебор символов 9 секунд
End Sub
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 07.07.2016, 22:21   #20
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Как-то все зациклились на циклах

Думаю, быстро получится через Replace. Можно VBA.Replace, а можно и RegExp.Replace. Что-то типа:
Код:
Sub A()
Dim O As Object, S$, L&, N&, N2&, T!
    T = Timer
    S = ActiveDocument.Range.Text
    L = Len(S)
    Set O = CreateObject("VBScript.RegExp")
    O.Global = True
    O.IgnoreCase = True
    O.Pattern = "[А-ЯЁа-яё]"
    S = O.Replace(S, "")
    N = L - Len(S)
    O.Pattern = "[A-Za-z]"
    S = O.Replace(S, "")
    N2 = L - N - Len(S)
    T = Round(Timer - T, 4)
    MsgBox "Русских букв: " & N & vbLf & "Английских букв: " & N2 & vbLf & "Время, сек: " & T
End Sub
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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