Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

20 Март 2019, 08:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Форматы чисел. Заменить разделитель в числах при выводе.  (Прочитано 411 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Netlog
Участник
**
Offline Offline

Сообщений: 30


« Стартовое сообщение: 5 Март 2019, 10:10 »

В ячейке F3 число вида -3,3
Надо собрать из него строку, где запятая будет заменена на точку "-3.3"
в соседней ячейке формула
TEXT(F3;"0.0")
не заменяет запятую, так и оставляет.
локаль русская.
Есть какой-то формат числа, гарантирующий вывод точки?
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 284


« Ответ #1: 5 Март 2019, 10:14 »

Код:
=TEXT(F3;"[$-411]0.0")

См. справку по форматам.
Записан

С уважением,
Михаил Каганский
Netlog
Участник
**
Offline Offline

Сообщений: 30


« Ответ #2: 5 Март 2019, 12:04 »

Тысяча извинений, вроде читал справку эту, но ничего не получилось с кодом [$-411]0.0
Прикладываю файл, в котором у меня не работает код.

И второй аспект - перед положительными числами нужен +


* 04.ods (19.51 Кб - загружено 4 раз.)
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 284


« Ответ #3: 5 Март 2019, 12:29 »

Хмм... да, это я приношу извинения. Я использовал точку в качестве десятичного разделителя в формате, хотя в моей локали десятичный разделитель - запятая; поэтому получил неправильный результат (выглядевший как было нужно). Похоже, [$-XXX] работает только в связке с [NatNumN].

В Вашем случае задача какая? Ведь достаточно использовать соответствующий язык и формат в формате ячейки.
Записан

С уважением,
Михаил Каганский
Netlog
Участник
**
Offline Offline

Сообщений: 30


« Ответ #4: 5 Март 2019, 13:20 »

Задача - собрать строку sql запроса.
В нём разделитель целой и дробной части - исключительно точка и никак иначе.
Числа бывают и положительные, и отрицательные, ноль невозможен.

Попробовал исходной ячейке поставить язык Английский - США - да, отображение изменилось, теперь с точкой. Не хватает плюса перед положительным числом.
Но как только на эту ячейку ссылаешься формулой Concatenate(F3; " ") - в результате строка всё равно содержит запятую.
Раньше я эти проблемы решал через IF, разделяя отдельно целую и дробную части числа. Хотелось бы чего попроще.
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 656


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #5: 5 Март 2019, 13:50 »

А в самом запросе sql не пробовали заменять запятую на точку?

REPLACE(s, replace, s2) — Заменяет все replace в строке s на s2
Записан

Netlog
Участник
**
Offline Offline

Сообщений: 30


« Ответ #6: 5 Март 2019, 14:17 »

В самом запросе запятых много, но сразу в преобразованном числе можно заменить.
Теперь бы ещё с плюсом перед положительными числами разобраться.
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 284


« Ответ #7: 5 Март 2019, 14:28 »

Самый короткий способ вывести число с десятичной точкой - похоже, этот:
Код:
=SUBSTITUTE(F3;",";".")
Но он не учитывает требования к плюсу перед числом.
Можно использовать вот это:
Код:
=SUBSTITUTE(TEXT(F3;"+0.0##########;-0.0##########");",";".")
Уточнение: в строке формата нужно использовать тот десятичный разделитель, который используется в локали ЛО. Для русской ЛО - запятая.
« Последнее редактирование: 5 Март 2019, 14:31 от mikekaganski » Записан

С уважением,
Михаил Каганский
Netlog
Участник
**
Offline Offline

Сообщений: 30


« Ответ #8: 5 Март 2019, 14:36 »

С реплейсом довольно громоздко.
Код:
=REPLACE(TEXT(F3;"0.00000000000");FIND(",";TEXT(F3;"0.00000000000");1);1;".")
А вот с
Код:
=SUBSTITUTE(TEXT(F3;"+0.0##########;-0.0##########");",";".")
похоже, всё нормально.
Спасибо за код формата с плюсом!
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 284


« Ответ #9: 5 Март 2019, 14:40 »

Код:
=IF(B6>0;"+";"")&SUBSTITUTE(B6;",";".")
Записан

С уважением,
Михаил Каганский
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 656


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #10: 5 Март 2019, 15:38 »

Задача - собрать строку sql запроса.
В нём разделитель целой и дробной части - исключительно точка и никак иначе.
Каким образом вы собираете строку запроса?
Записан

Netlog
Участник
**
Offline Offline

Сообщений: 30


« Ответ #11: 5 Март 2019, 17:19 »

примерно так:
Код:
=CONCATENATE("select top 100 [timeval] "& SUBSTITUTE(TEXT(J3;"+0.0##########;-0.0##########");",";".") &",-[numcom]       ,[idcomp]       ,[par1]       ,[par2]       ,[par3]       ,[par4]       ,[event]       ,[indexkey]       ,[razdindex]       ,[hozorgan]       ,[hozguest]       ,[remark]       ,[doorindex]       ,[mode]       ,[devicetime]       ,[vevent]       ,[zreserv]       ,[zoneindex]       ,[readerindex]       ,[sign]       ,[tprzdindex]       ,[tppar4]       ,[indexzone]       ,[tpindex]       ,newid()   from [orion16].[dbo].[plogdata]   where (razdindex = "& D3 &")   AND   (timeval > '"& TEXT(F3; "mm-dd-yyyy hh:mm:ss") &"')  AND   (timeval < '"& TEXT(G3; "mm-dd-yyyy hh:mm:ss") &"')   order by timeval")
Это пока учебный запрос, потом, примерно в том же духе из таких запросов собирается пакет примерно в тысячу запросов, и выполняется разом.
Параметры запросов уже забиты в табличке LibreOffice Calc.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!