2010 - [решено] Укоротить большие числа (Word)

Ответить
Аватара пользователя
Starter1

2010 - [решено] Укоротить большие числа (Word)

Сообщение Starter1 »

Работа рутинная, поэтому без макроса не обойтись.

В документе есть большие числа. Например: 16323542,67. Документ большой (60 страниц), больших числе много. Требуется укоротить такие числа, т.е. привести в вид такой: 16*10^6 (10 в шестой степени, в Word'е естественно степень на верху). Числа в документе встречаются разные, от маленьких типа 0,1 до миллиардов. Необходимо сократить только большие числа: если число 80 000 то 80*10^3 если число 100 000 то 100*10^3. Обрабатывать только те числа которые >=10 000. Степени допускаются только 10^3 10^6 10^9 10^12 и тд.



Заранее благодарю вас Изображение !



З.Ы.: Есть похожий пример
http://otvety.google.ru/otvety/threa...1ae0813f56a5a0
, его только нужно немножко доработать.
Аватара пользователя
Iska

Re: 2010 - [решено] Укоротить большие числа (Word)

Сообщение Iska »

Starter1, выкладывайте образец/пример документа.
Аватара пользователя
Iska

Re: 2010 - [решено] Укоротить большие числа (Word)

Сообщение Iska »

В принципе всё тот же документ если вы помните. Документ PZ_formula.doc.
Аватара пользователя
Starter1

Re: 2010 - [решено] Укоротить большие числа (Word)

Сообщение Starter1 »

читать дальше »



Цитата Starter1:



если вы помните.
2010 - [решено] Укоротить большие числа (Word)




Ну…





Сами-то как думаете?




Цитата Starter1:




Цитата Iska:



выкладывайте образец/пример документа.
2010 - [решено] Укоротить большие числа (Word)




всё тот же документ
2010 - [решено] Укоротить большие числа (Word)




Потому Вы выложили сразу три документа? Это шутка такая?





По работе: например, в документе «PZ_formula.doc» после текста «Вращающие моменты на валах:» есть числа «115062,16», «240583,044», «643558,523». Мы должны их поменять на «115,06216·10³», «240,583044·10³» и «643,558523·10³» соответственно. Так? Или на «115·10³», «240·10³» и «643·10³»?
Аватара пользователя
Starter1

Re: 2010 - [решено] Укоротить большие числа (Word)

Сообщение Starter1 »

Starter1, к сожалению, моих идей недостаточно.



На простом тексте, наподобие Вашего первого поста в этой теме, хорошо работает такое:


читать дальше »




Код:

Код: Выделить всё

Option Explicit
Sub Sample2()
    Dim objRegExp As Object
    Dim lngValue As Long
    Dim intOrder As Integer
    Dim strValue As String
    Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Pattern = "(?:1\d{4,}|[2-9]\d{4,}),?\d*"
    Do While objRegExp.Test(ThisDocument.Range.Text)
        With objRegExp.Execute(ThisDocument.Range.Text).Item(0)
            lngValue = CLng(Replace(.Value, ",", "."))
            intOrder = ((Len(CStr(lngValue)) - 1) \ 3) * 3
            strValue = CStr(lngValue \ 10 ^ intOrder) & "·10"
            Debug.Print .Value
            With ThisDocument.Range(.FirstIndex, .FirstIndex + .Length)
                Debug.Print .Information(wdActiveEndPageNumber) & " (" & .Information(wdNumberOfPagesInDocument) & ")"
                .Delete
                .InsertAfter strValue
                .Collapse wdCollapseEnd
                .InsertAfter intOrder
                .Font.Superscript = True
                .Collapse wdCollapseEnd
            End With
        End With
    Loop
    Set objRegExp = Nothing
End Sub








читать дальше »


Изображение



Изображение






Но, при наличии в документе полей, нумерация символов в «ThisDocument.Range()» и «ThisDocument.Range.Text» не совпадает.



Также, насколько я понимаю, не удастся перевести шаблон регулярного выражения в форму для Find & Replace Microsoft Word даже в Вашей версии (
Find and replace text by using regular expressions (Advanced) - Word - Office.com
).



Возможно, более опытные коллеги подскажут, что можно сделать.
Аватара пользователя
Starter1

Re: 2010 - [решено] Укоротить большие числа (Word)

Сообщение Starter1 »

Iska, Понятно. Спасибо. Я хочу попробовать связать с builder.
Аватара пользователя
Starter1

Re: 2010 - [решено] Укоротить большие числа (Word)

Сообщение Starter1 »

Iska, Частично удалось решить проблему. Первое что заметил это в документе числа до миллиона. То есть 10^3 достаточно. Поэтому воспользовался подстановочными знаками. Но теперь другая проблема. После 2-3х чисел стоит выражение "*10^3", прямо вот такое выражение, то есть 3 не надстрочный символ, галочка показывающая степень тоже стоит. И остаётся вопрос только как эту 3 сделать надстрочной и убрать галочку? Как галочку убрать я знаю, а вот цифру сделать надстрочной не понятно. Прикрепил документ на всякий случай.
Вложения
PZ_formula.rar
(490.08 КБ) 0 скачиваний
PZ_formula.rar
(490.08 КБ) 0 скачиваний
Аватара пользователя
Iska

Re: 2010 - [решено] Укоротить большие числа (Word)

Сообщение Iska »

Цитата Starter1:



Поэтому воспользовался подстановочными знаками.
2010 - [решено] Укоротить большие числа (Word)




Просто поиск/замена с возрастающим количеством цифр? В принципе, да — иногда полуавтоматический вариант работает успешнее нежели полный автомат. Цифры при ГОСТ, случайно, не заменили Изображение?




Цитата Starter1:



После 2-3х чисел стоит выражение "*10^3", прямо вот такое выражение, то есть 3 не надстрочный символ, галочка показывающая степень тоже стоит. И остаётся вопрос только как эту 3 сделать надстрочной и убрать галочку? Как галочку убрать я знаю, а вот цифру сделать надстрочной не понятно.
2010 - [решено] Укоротить большие числа (Word)




Это-то просто:


читать дальше »


Изображение



Надеюсь, «^» у Вас использовался только в качестве знака степени.
Аватара пользователя
Starter1

Re: 2010 - [решено] Укоротить большие числа (Word)

Сообщение Starter1 »

Цитата Iska:



Цифры при ГОСТ, случайно, не заменили ?
2010 - [решено] Укоротить большие числа (Word)




Проверял вроде нормально.


Цитата Iska:



Надеюсь, «^» у Вас использовался только в качестве знака степени.
2010 - [решено] Укоротить большие числа (Word)




Тоже на это надеюсь Изображение .
Ответить

Вернуться в «Microsoft Office (Word, Excel, Outlook и т.д.)»