Tło komórki i jego wystąpienie.

Użytkowanie arkusza kalkulacyjnego
rogerege
Posty: 10
Rejestracja: pt mar 23, 2018 4:20 pm

Tło komórki i jego wystąpienie.

Post autor: rogerege »

Witam wszystkich.
Czy jest możliwość oznaczenia komórki (prawda,fałsz? lub inaczej) jeżeli sąsiednia posiada kolor tła np. czerwony? Nie chodzi o sumowanie a tylko o samo wystąpienie.
OpenOffice 4.1.1 Win7
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Tło komórki i jego wystąpienie.

Post autor: Jan_J »

Da się, ale wymaga elementów programowania:
albo przy użyciu funkcji operującej na skoroszycie (tzw. makro, np. Sub w Basicu),
albo samodzielnie napisanej (np. Function w Basicu) funkcji rozszerzającej repertuar wyrażeń w formułach.

To ostatnie rozwiązanie wymaga pewnej formalnej gimnastyki, ponieważ funkcja wywołana z poziomu formuły dowiaduje się o wartości przechowywanej w komórce, ale nie o jej adresie ani innych właściwościach (np. kolorze). Patrz np. https://forum.openoffice.org/en/forum/v ... 3&p=509096
Jedna z możliwości (patrz np. https://forum.openoffice.org/en/forum/v ... 2&p=481787) polega na przekazaniu do funkcji adresu komórki w postaci tekstu zamiast jako wyrażenia języka formuł (podobnie jak w tzw. adresowaniu pośrednim).

Pytanie, do czego to potrzebne. Jeśli chcesz to zrobić raz, dla konwersji, lepiej napisać makro. Jeśli projektujesz system który ma pracować w oparciu o kolory, lepiej się wycofać z tej decyzji. Kolor winien być skutkiem działania, nie przyczyną.

Pozostaje pytanie, co rozumieć przez „kolor czerwony” w przestrzeni RGB o 8-bitowej głębi każdej składowej? Tylko (255,0,0), różne (x,0,0) przy dowolnym x > ..., czy jeszcze inaczej?

Załączam szkic takiej funkcji w poniższym kodzie

Kod: Zaznacz cały

rem funkcja opracowana przez Jan_J na potrzeby uczestników serwisu forum.openoffice.org/pl
rem kopiowanie, modyfikacja, rozposzechnianie w dowolnych celach dozwolone
rem brak gwarancji dot. spełnania oczekiwań, skuteczności, bezpieczeństwa danych etc.
rem październik 2021
rem
rem wyciąga wektor barwy tła z komórki o wskazanym adresie
rem parametr: TEKST z adresem komórki
rem wynik: TEKST z opisem wektora RGB koloru tła
rem ograniczenie: działa tylko na pierwszoplanowym arkuszu (to jest wstępny szkic funkcji)
rem
function pokazKolor(adres as string) as string
	rem tu uproszczenie dot. obsługi wyłącznie pierwszoplanowego arkusza
	arkusz = ThisComponent.CurrentController.ActiveSheet()
	zakres = arkusz.getCellRangeByName(adres)
	kom = zakres.GetCellByPosition(0,0)
	kolor = kom.cellBackColor()
	pokazKolor = "("  & kolor \ 65536 & ", " & (kolor mod 65536) \ 256 & ", " & (kolor mod 256) & ")"
end function
oraz osadzony w skoroszycie
kolory.ods
(8.71 KiB) Pobrany 135 razy
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
rogerege
Posty: 10
Rejestracja: pt mar 23, 2018 4:20 pm

Re: Tło komórki i jego wystąpienie.

Post autor: rogerege »

Bardzo dziękuje ale to nie mój poziom :shock: , czy jeżeli zamiast koloru tła pytanie będzie dotyczyło koloru czcionki (lub jej stylu) to coś będzie prościej? :) Ewentualnie czy da się oznaczyć komórkę w której "zachodzi" formatowanie warunkowe które zmieniło kolor tła? Właściwie jest mi to potrzebne tylko do posortowania komórek na te w których formatowanie zaznaczyło jej tło kolorem i na te z białym tłem.
OpenOffice 4.1.1 Win7
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Tło komórki i jego wystąpienie.

Post autor: Jermor »

Formatowanie warunkowe zachodzi tylko wówczas, gdy spełniony jest konkretny warunek. Zatem, tworząc formułę sprawdzającą ten warunek w towarzyszącej danym kolumnie, uzyskasz wynik PRAWDA lub FAŁSZ, a to pozwoli ci posortować dane wg tej kolumny.

W wersji 7.2 Calca dodano możliwość filtrowania danych po kolorze tła. Niestety dotyczy to tylko komórek, w których kolor jest elementem stylu przypisanego wprost (w komórce zmieniono kolor poprzez sformatowanie jej indywidualnie; przypisano komórce styl, w którym jest kolor tła; formuła zawarta w komórce zawiera funkcję STYL()), nie są rozpoznawane kolory wynikające z formatowania warunkowego.
AOO 4.1.15, LO 7.5.9 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Awatar użytkownika
Rafkus
Posty: 515
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Tło komórki i jego wystąpienie.

Post autor: Rafkus »

W przypadku koloru czcionki i stylu sprawa jest podobna: bez makra się nie da. Można by się pokusić i wgrać rozszerzenie COUNTSTYLE.
ALE piszesz:
formatowanie zaznaczyło jej tło kolorem i na te z białym tłem.
Czy to oznacza że stosujesz formatowanie warunkowe?? Jeśli tak to wystarczy dany warunek formatowania wpisać do jakieś kolumny obok aby uzyskać informację czy został on w danym wierszu spełniony czy też nie.
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
rogerege
Posty: 10
Rejestracja: pt mar 23, 2018 4:20 pm

Re: Tło komórki i jego wystąpienie.

Post autor: rogerege »

Jermor pisze:Formatowanie warunkowe zachodzi tylko wówczas, gdy spełniony jest konkretny warunek. Zatem, tworząc formułę sprawdzającą ten warunek w towarzyszącej danym kolumnie, uzyskasz wynik PRAWDA lub FAŁSZ, a to pozwoli ci posortować dane wg tej kolumny.
Rafkus pisze:Jeśli tak to wystarczy dany warunek formatowania wpisać do jakieś kolumny obok aby uzyskać informację czy został on w danym wierszu spełniony czy też nie
O to chyba to mi rozwiązuje problem. Dziękuję za pomoc.
OpenOffice 4.1.1 Win7
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Tło komórki i jego wystąpienie.

Post autor: Jan_J »

Ad istota rzeczy:
rogerege pisze:jest mi to potrzebne tylko do posortowania komórek
Klasyczny przykład problemu XY wg terminologii Erica S. Raymonda. Patrz np. https://en.wikipedia.org/wiki/XY_problem
Wniosek: nie spieszyć się z odpowiedzią.

Ad czy nie da się prościej:
nie da się, jeżeli wyciągamy dane z atrybutów komórki rozumianej jako część składowa dokumentu. Jeśli zaś mamy dostęp do obliczenia przesłanek, które daną wartość atrybutu spowodowały, sprawa radykalnie się upraszcza; patrz np. formuła formatowania warunkowego.
W informatyce sposób przechowywania informacji — czyli jej reprezentacja w postaci danych — miewa istotne znaczenie. W życiu zresztą także.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ