Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [решено] Укоротить большие числа (Word) (http://forum.oszone.net/showthread.php?t=259589)

Starter1 28-04-2013 18:51 2141231

Укоротить большие числа (Word)
 
Работа рутинная, поэтому без макроса не обойтись.
В документе есть большие числа. Например: 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 28-04-2013 21:16 2141326

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

Starter1 29-04-2013 12:19 2141574

В принципе всё тот же документ если вы помните. Документ PZ_formula.doc.

Iska 29-04-2013 13:23 2141617

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

Цитата Starter1
если вы помните. »

Ну…


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

Цитата:

Цитата Starter1
Цитата:

Цитата Iska
выкладывайте образец/пример документа. »

всё тот же документ »

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


По работе: например, в документе «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 29-04-2013 21:50 2141921

На «115·10?», «240·10?» и «643·10?»

Iska 30-04-2013 13:02 2142221

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 01-05-2013 12:39 2142776

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

Starter1 01-05-2013 17:04 2142892

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

Iska 01-05-2013 19:29 2142944

Цитата:

Цитата Starter1
Поэтому воспользовался подстановочными знаками. »

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

Цитата:

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

Это-то просто:
читать дальше »


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

Starter1 01-05-2013 21:46 2143003

Цитата:

Цитата Iska
Цифры при ГОСТ, случайно, не заменили ? »

Проверял вроде нормально.
Цитата:

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

Тоже на это надеюсь :) .


Время: 19:50.

Время: 19:50.
© OSzone.net 2001-