Помощь с формированием данных в Calc

Автор ppskun, 27 января 2011, 09:32

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

ppskun

Возникла такая потребность нужно в open ofice calc  сделать формулу чтоб она считала примерно так:
В столбце А содержаться числа, нужно чтобы в таблицу на другом листе(книге) он вычислял сумму этих чисел в зависимости от того занят ли столбец B(пример А1+А2, , В1(пустой), В2(пустой)=выдает сумму А1+А2.......... а если А1+А2, , В1(заполнена), В2(пустой)= выдает А2 )
И возможно ли сделать чтоб он считал в зависимости от цвета например числа в ячейках А1, А3,А5- отмечены красным(сам цвет текста) а в ячейках А2, А4 (синие) ...то выдовалась бы сумма отдельно красных и синих?.... как это реализовать???
Возможно ли это реализовать через редактор формул или все таки придется писать макрос(если макрос то посоветуйте литературу? или помогите как начать его )????

Helen

Цитата: ppskun от 27 января 2011, 07:32И возможно ли сделать чтоб он считал в зависимости от цвета например числа в ячейках А1, А3,А5- отмечены красным(сам цвет текста) а в ячейках А2, А4 (синие) ...то выдовалась бы сумма отдельно красных и синих?.... как это реализовать???
тема о фильтрации по цвету http://forumooo.ru/index.php/topic,1203.0.html

ppskun

Спасиб я щас тока ее заметил... ну а насчет пустых ячеек???

ppskun

Уважаемые форумчане ну помогите разобраться с макросом. по цвету то ладно почитал что то понял что то не нет.. ну а чтобы в зависимости от пустой или заполненой ячейки считал или не считал как сделать???? Или дайте ссылку чтоб почитать.

bormant

A1: =IF(ISBLANK(B1);C1;D1)
в а1 будет содержимое c1, если b1 пуста, иначе -- содержимое d1.
Автору на яд. Поддержать форум.

ppskun

bormant-огромное спасибо
А как щас довести чтобы в А1 содержалась сумма т.е.  всех С в зависимости от того свободна ли я\чейка напротив?...т.е. С1+С2+С3 если  B1,B2,B3 свободна если же B2 занято то С1+С3....так мне нужно чтоб он весь столбец считал от 2 до бесконечности

Рыбка Рио

{=SUM(IF(ISBLANK(B1:B50000);C1:C50000;D1:D50000))} ?  (Фигурные скобки означают что это формула массива, чтобы её ввести нужно вставить в ячейку формулу =SUM(IF(ISBLANK(B1:B50000);C1:C50000;D1:D50000)) и нажать Ctrl Shift Enter, либо в мастере функций поставить галочку "массив" (в нижнем левом углу)). Формула считает столбец до 50 000 тысяч, если туда ввести миллион - то будет долго считать, так что желательно уменьшить размер столбца (или увеличить) до необходимого, чтобы Calc зря не тратил процессор.
ubuntu 12.04 + LibO3.6.0

ppskun


Рыбка Рио

Цитата: ppskun от 27 января 2011, 07:32И возможно ли сделать чтоб он считал в зависимости от цвета например числа в ячейках А1, А3,А5- отмечены красным(сам цвет текста) а в ячейках А2, А4 (синие)
Если у вас цвет задан условным форматированием (меню Формат/Условное форматирование...) то это просто - используйте то же условие что и в условном форматировании. А если вручную или макросом, то можно использовать функции цветф и цветш или макрос.
ubuntu 12.04 + LibO3.6.0

ppskun

Так круто теперь как бы все сформировать в единый комплект и чтоб пересчет производился по нажатии какой нить клавиши???.
Т.Е. Офис с одного листа формировал данные в разные колонки в зависимости от цвета и свободной ячейки рядом....
Чтоб изначальным условием служило пустая ли ячейка потом только какого цвета текст. И если цвет текста синий чтобы эту ячейку не считал?
Блин огромное ВАМ ВСЕМ спасибо !!!!!!!!!, что помогаете, сам я в опен офис не бум бум а тут почитав начинаю по чуть чуть понимать что и как)))))

ppskun

Так возник еще вопрос в столбце где числа иногда проскальзывают значения с буквами,(поясняющие) как сделать чтобы он их игнорировал и пропускал эти ячейки а считал только там где целые значения (например 1,2,3.......100000000)

Рыбка Рио

#11
Цитата: ppskun от  1 февраля 2011, 13:28Так круто теперь как бы все сформировать в единый комплект и чтоб пересчет производился по нажатии какой нить клавиши???.
Так можно сделать с макросом, и судя по всему, это самое удобное решение было бы для вас. См. пример.ods. Там на стандартной панели есть кнопка "запустить макрос"(изображнение, имя, и выбор макроса можно настроить в меню Сервис/Настройка - Панели инструментов). Редактирование макроса Alt-F11 или меню Сервис/Макросы/...Basic...

REM  *****  BASIC  *****

Sub Main
'Globalscope.BasicLibraries.LoadLibrary( "MRILib" ) - чтобы смотреть, какие есть свойства (чтобы использовать эту строчку нужно установить расширение http://extensions.services.openoffice.org/project/mri)
Doc = ThisComponent
Sheet1=Doc.Sheets.getByName("Лист1")
Sheet2=Doc.Sheets.getByName("Лист2")
For i=0 to 500
Cell=Sheet1.getCellByPosition(0,i) '0 - номер столбца (начинается с нуля)
If Cell.Type = com.sun.star.table.CellContentType.VALUE then 'если ячейка содержит число
'значение столбца 3 (т.е. D) равно значению столбца 2 (т.е. С)
Sheet1.getCellByPosition(3,i).Value = Sheet1.getCellByPosition(2,i).Value
Elseif Cell.Type = com.sun.star.table.CellContentType.EMPTY or Cell.Type = com.sun.star.table.CellContentType.TEXT then'если ячейка пустая либо содержит строку
'значение столбца 3 (т.е. D) равно значению столбца 1 (т.е. B)
Sheet1.getCellByPosition(3,i).Value = Sheet1.getCellByPosition(1,i).Value
Endif
Next
'mri Cell
End Sub


[вложение удалено Администратором]
ubuntu 12.04 + LibO3.6.0