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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2009, 13:14   #1
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию Формат числа

В документе есть числа типа:
0,0000106722000000000 .
Возможно ли автоматически отформатировать такие числа в формат:
1,067*10-5(десять в минус пятой)
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 13.11.2009, 15:01   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Макросом. Искать такие числа, функцией FormatNumber преобразовывать в экспоненциальную форму, а затем поиском и заменой заменять на показатели степени.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 13.11.2009, 16:01   #3
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

А если через поля?
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 13.11.2009, 17:56   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Через поля ты получишь число вида 1,067Е-5. А потом опять поиск и замена
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 13.11.2009, 20:13   #5
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

А как в таком виде сделать?
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 14.11.2009, 12:41   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Нет, с полями очень муторно получается. Мне казалось, что есть ключ поля, чтобы форматировать число в экспоненциальную форму, но я ошибался. Придётся всё делать макросом:
Код:
Sub FormatToExponential()
  Dim oDoc As Document: Set oDoc = ActiveDocument
  Dim bFound As Boolean
  Dim iEnd As Long
  'Заменяем число на экспоненциальную форму
  Do
    With oDoc.Range(iEnd, oDoc.Range.End).Find
      .Text = "[0-9][.,][0-9]@>" 'Ищем числа, разделенные точкой или запятой
      .MatchWildcards = True
      While .Execute
        bFound = .Found
        'Если в числе десятичный разделитель запятая, то заменяем её на точку
        .Parent.Text = Format(Val(Replace(.Parent.Text, ",", ".")), "0.000E+")
        iEnd = .Parent.End
      Wend
      bFound = Not bFound
    End With
  Loop Until bFound
  
  'Теперь ищем эти числа и готовим их для замены на показатель степени
  With oDoc.Range.Find
    .Text = "([0-9][.,][0-9]{3})(E)(*[0-9]@>)"
    .Replacement.Text = "\1·10#####\3"
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
  End With
  'Заменяем кодовую последовательность на показатель степени.
  With oDoc.Range.Find
    .Text = "#####(*[0-9]@>)"
    .Replacement.Text = "\1"
    .Replacement.Font.Superscript = True
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
  End With
End Sub
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 14.11.2009, 12:55   #7
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Спасибо! Но к сожалению макрос не хотелось бы применять.
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 14.11.2009, 13:46   #8
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

К сожалению, полями не получится. Почему макрос не устраивает?

Есть одно хитрое поле, которое можно подрихтовать под твои потребности, но очень это запутано будет.
Вот код этого поля:
Цитата:
{QUOTE{ASK z "What +ve number do you in scientific notation form?"}{SET a{=abs(z)}}{SET b{=9-(a<10^9)-(a<10^8)-(a<10^7)-(a<10^6)-(a<10^5)-(a<10^4)-(a<10^3)-(a<10^2)-(a<10^1)-(a<10^0)-(a<10^-1)-(a<10^-2)-(a<10^-3)-(a<10^-4)-(a<10^-5)-(a<10^-6)-(a<10^-7)-(a<10^-8)}}{SET c{=int(a/10^b)+mod(a;10^b)/10^b}}"{a} in scientific notation form is {c \# 0,000}E{b \# +#;-#}."}
Работает это поле довольно просто.
  1. Запрашивается число, которое нужно показать в экспоненциальной форме и записывается в закладку z. {ASK z "What +ve number do you in scientific notation form?"};
  2. В закладку a записывается модуль введенного числа. {SET a{=abs(z)}}
  3. Считается показатель степени и записывается в закладку b. {SET b{=9-(a<10^9)-(a<10^8)-(a<10^7)-(a<10^6)-(a<10^5)-(a<10^4)-(a<10^3)-(a<10^2)-(a<10^1)-(a<10^0)-(a<10^-1)-(a<10^-2)-(a<10^-3)-(a<10^-4)-(a<10^-5)-(a<10^-6)-(a<10^-7)-(a<10^-8)}}
  4. Определяется основание введённого числа. Для этого складывается целая часть от деления этого числа на 10^b и дробная часть от деления этого числа на 10^b. Основание записывается в закладку с. {SET c{=int(a/10^b)+mod(a;10^b)/10^b}}
  5. После чего всё это дело выводится в виде текста. "{a} in scientific notation form is {c \# 0,000}E{b \# +#;-#}."
Пример использования в приложении. Желаю успехов
Вложения
Тип файла: doc rad96828.doc (24.5 Кб, 23 просмотров)
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 14.11.2009 в 14:03.
viter.alex вне форума Ответить с цитированием
Старый 14.11.2009, 17:28   #9
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

Да и подгонять не надо только Е заменить на *10 и все!
Спасибо!
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 14.11.2009, 17:40   #10
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Можно еще выражение {b \# +#;-#} отформатировать как верхний индекс, и получится совсем красиво.

Осталось заметить, что это поле будет работать для чисел от 10^-18 до 10^9
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 14.11.2009 в 17:42.
viter.alex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КАК ПЕРЕДЕЛАТЬ ФОРМАТ mp4 В ФОРМАТ 3gp,MPEG4 kamalruslan Софт 4 20.08.2015 16:16
Access Формат числа Melamory Microsoft Office Access 1 28.09.2008 17:29
Формат числа в калькуляторе Mint86 Microsoft Office Excel 8 25.07.2008 11:49
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49
формат отрицательного числа zetrix Microsoft Office Excel 0 30.10.2006 18:54