Фильтрация по цвету [MEMO]

Автор p1ter, 23 декабря 2010, 15:08

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

p1ter

Всем привет. Раз столкнулся с такой темой, описал в блоге у себя, а хостинг картинок, блин, отвалился =-((
В итоге пошаговая инструкция в гугладоксах.

Ivanych

Спасибо за текст! Искренне порадовало

p1ter


Ivanych

Цитата: p1ter от 23 декабря 2010, 20:51Сорказъм¿
Ни в коей мере. Знали бы Вы, как откровенно достали любители выделения цветом.

VlhOwn

Действительно! Козлы! Делают, понимаешь, как им удобно... 

p1ter

Есть более сатанинская тема.. цвет не ячейки, а шрифта.
Вот письмо с и-рс.
Цитата: Risovod от 24 декабря 2010, 10:43
Цитата: p1ter от 23 декабря 2010, 14:29
Цитата: Risovod от 22 декабря 2010, 22:31
Здравствуйте.

Помогите разобраться с фильтрацией по цвету в OpenOffice Calc. Нужно подсчитать сумму значений выделенных определенным цветом. Вышлите пожалуйста подробную инструкцию, а то на http://gtntxrf.my1.ru/news/2009-08-19-78 рисунки уже не отображаются. Макрос добавить смог, а вот использовать его не получается.

Для суммирования наверное буду использовать функцию sumif, а вот условием цвета буду ориентироваться на Ваш способ.
Привет куда выслать?
Плз, кинь ссылку на тему.

Спасибо за ответ.
Вот название темы на форуме: Сортировка, замена по цвету фона ячеек
, а вот ссылка: http://community.i-rs.ru/index.php/topic,10696.0.html

Теперь понял почему не получалось определить номер цвета: оказывается макрос подключил и использовал правильно, однако у меня не ячейка окрашена, а шрифт текста и цифр в ячейки, поэтому выдавало всегда "-1".
Теперь возникли следующие вопросы:
1) можно ли такой же макрос, только для цвета шрифта?
2) как использовать полученное значение цвета для подсчета суммы цифр в окрашенных этим цветом ячеек? Просто подстановкой номера цвета как условие в функцию "sumif" не помогает (ничего не находит).
Пробовал писать функцию следующим образом:
=SUMIF(O3:O830;"16764057";O3:O827) где 16764057 - номер цвета окрашенных ячеек, присутствующих в диапазоне суммирования.
привет.
Есть шанс решить задачу с цветом шрифта?
Можно тему перенести на форумооо

JohnSUN

Цитата: p1ter от 24 декабря 2010, 08:41
Можно тему перенести на форумооо
Откуда и куда? Мы же вроде бы и так на форумооо?.. Или это "Ой, не в то окно!"?  ???
Цитата: p1ter от 24 декабря 2010, 08:41Пробовал писать функцию следующим образом:
=SUMIF(O3:O830;"16764057";O3:O827) где 16764057 - номер цвета окрашенных ячеек, присутствующих в диапазоне суммирования.
Ну, здесь понятно... Если в диапазоне критериев и в диапазоне суммирования один и тот же столбец и разное количество строк, а числовой параметр взят в кавычки, то формула будет показывать цену на керосин...
Первый параметр - ячейки с числовым значением цвета (ячейки или шрифта - безразлично), то есть столбец с результатами функции BackColor или FontColor.
Второй параметр - число, значение цвета. То есть просто 16764057 без кавычек. Чтобы не вбивать эти числа руками, проще всего ткнуть мышкой в любую ячейку с этим значением и нажать Shift-F4 для получения абсолютной ссылки.
Третий параметр - ячейки с данными, те которые раскрашены и которые нужно подсчитывать по цвету

Цитата: p1ter от 24 декабря 2010, 08:41Есть шанс решить задачу с цветом шрифта?
Function FontColor(a)
oSheet = ThisComponent.CurrentController.ActiveSheet
oCell = oSheet.getCellRangeByName(a)
FontColor = oCell.CharColor
End Function
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Risovod

JohnSUN

1) А как пользоваться макросом FONTCOLOR ?
Макрос в OOO  добавил, но использовать по такому способу: =FONTCOLOR("A" & ROW())   не получается.

2)
ЦитироватьПервый параметр - ячейки с числовым значением цвета (ячейки или шрифта - безразлично), то есть столбец с результатами функции BackColor или FontColor.
Второй параметр - число, значение цвета. То есть просто 16764057 без кавычек. Чтобы не вбивать эти числа руками, проще всего ткнуть мышкой в любую ячейку с этим значением и нажать Shift-F4 для получения абсолютной ссылки.
Третий параметр - ячейки с данными, те которые раскрашены и которые нужно подсчитывать по цвету
Не подходит, так как в матрице много столбцов с данными, по которым нужно делать поиск и подсчитывать сумму, с выводом результатов в конец столбца. А добавлять дополнительно столбцы с распознаванием цвета громоздко.

p1ter

2Risovod а какая у Вас версия OOo?

Рыбка Рио

#9
У меня вариант JohnSun работает. Можно ещё использовать такой вариант функции fontcolor - она может работать с разными листами документа и писать ответ в любой ячейке. Использовать формулу нужно в таком виде: =FONTCOLOR(CELL("address";хх)), где хх - обычная ссылка на ячейку, типа A1 или Лист2.A2
Function FontColor(a As String)
Doc=ThisComponent
a=join(split(a,"$"),"")
b=split(a,".")
n=ubound(b)
If n=1 then
oSheet=Doc.Sheets.getByName(b(0))
else
oSheet = Doc.CurrentController.ActiveSheet
endif
oCell = oSheet.getCellRangeByName(b(n))
FontColor = oCell.CharColor
End Function
ubuntu 12.04 + LibO3.6.0

Рыбка Рио

(в предыдущем посте была ошибка - сейчас исправлено)
ubuntu 12.04 + LibO3.6.0

convas

#11
Не пересчитывает ни автоматически, ни по F9 ?!
И ошибка при загрузке, и вообще не работает.

OOo 3.2.1 pro Infra

[вложение удалено Администратором]

Risovod

p1ter
OpenOffice.org 3.3.0 RC6

Клио
Работает, но можно ли эту функцию =FONTCOLOR(CELL("address";хх))  включить в формулу =SUMIF ?

Рыбка Рио

#13
Цитата: convas от 24 декабря 2010, 13:20Не пересчитывает ни автоматически, ни по F9 ?!
И ошибка при загрузке, и вообще не работает.
Вторая функция не работает, т.к. в конце нужно заменить fontcolor на fontcolork. У меня тоже при загрузке выдает ошибки, нужно только потянуть за угол ячейки. Просто я храню макросы в папке профиля, а не в файле - там таких ошибок не возникает и всё сразу работает. Чтобы уведомлений об ошибках не было, если вы храните макросы в файле, то можно в начале функции добавить строчку On error resume next . Просто этот макрос не предназначен для хранения в документе, видимо.


С sumif не работает такой вариант. Наверное, можно написать эту функцию не на Basic (а на Ява, Питон, и др.) - тогда заработает. Функции Calc на Basic, кажется не умеют работать с самими ячейками, а только с их значениями - поэтому и приходится писать cell("address";xx). Если эту функцию писать на другом языке - то появляется много новых возможностей.
ubuntu 12.04 + LibO3.6.0

Рыбка Рио

Если хотите, могу попробовать сделать функции fontcolor и backcolor на Яве или на Питоне, а потом покажу инструкцию тут о том как это делается. Сразу скажу, что там удобно использовать Netbeans + плагин для OOo. И тогда даже без знания Явы можно легко писать всякие функции. И эти функции будут потом в мастере функций (в отличие от функций на Basic), с подсказками и всеми атрибутами обычных функций. Их даже можно писать кирилицей будет.
ubuntu 12.04 + LibO3.6.0