Сумма столбца. Прошу помочь найти решение.

Автор mutabor2020, 29 октября 2020, 02:29

0 Пользователи и 1 гость просматривают эту тему.

mutabor2020

Ежедневно приходится работать с такими отчетами. Столкнулся с проблемой. На первом скриншоте столбец " Количество " состоит из целых чисел, и его сумма отображается внизу. ( подчеркнуто красным). В столбце "Цена" числа с остатком, но сумма внизу не считается. Как исправить, что бы считалась сумма столбца " Цена " ?

kompilainenn

Использовать десятичный разделитель в числах нормальный (запятую). Сейчас ваши "числа" - это текст с точки зрения программы
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

greenman

Либо в настройках языка сменить десятичный разделитель.

sokol92

Цитата: mutabor2020 от 29 октября 2020, 02:29Ежедневно приходится работать с такими отчетами
Выложите пример такого отчета не как фотографию, а в оригинальном файле ("чувствительные" данные, если есть, замените на "яблоки"). Эти отчеты получены не в Excel и не в Calc?
Владимир.

eeigor

#4
Выделите диапазон и просто замените символ <.> (точка) на символ <,> (запятая). Всё заработает. Восстановите формат числа.

Или добавьте в стандартный модуль (из папки "Мои макросы и диалоги") и затем выполните следующий макрос, предварительно выделив диапазон или несколько несвязных диапазонов, в котором (которых) надо заменить точку на запятую. Кнопку с макросом можно добавить на стандартную панель, выделить объект операции и нажать на кнопку; имя макросу можно присвоить на русском языке или изменить подпись на кнопке.

Sub Point2Comma()
   Dim oSelection As Object
   Dim oReplace As Object
   Dim nCount As Long

   oSelection = ThisComponent.getCurrentSelection()
   If Not (oSelection.supportsService("com.sun.star.sheet.SheetCellRange") _
    Or oSelection.supportsService("com.sun.star.sheet.SheetCellRanges")) Then
       MsgBox "Не выделен диапазон. Допускается множественное выделение." _
        , MB_ICONEXCLAMATION, "Ошибка выделения"
       Exit Sub
   End If

   oReplace = ThisComponent.CurrentController.ActiveSheet.createReplaceDescriptor()
   With oReplace
       .SearchString = "."
       .ReplaceString = ","
   End With

   oSelection.NumberFormat = 4  'com.sun.star.i18n.NumberFormatIndex.NUMBER_1000DEC2 (#,##0.00)
   nCount = oSelection.replaceAll(oReplace)
   MsgBox "Количество замен: " & nCount, MB_ICONINFORMATION, "Готово"
End Sub


Примечание. Форматирование будет сохранено (с разделением разрядов, два знака после запятой).

UPD: Поменял сеттер <.setSearchString(".")> и др. на естественное присвоение. Убрал то, что работает по умолчанию. Пример получился вполне пригодным для дальнейшего использования и м.б. включён в свою "библиотечку макросов".
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community