Strona 1 z 1

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

: pn paź 25, 2021 12:08 pm
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.

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

: pn paź 25, 2021 9:28 pm
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 162 razy

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

: wt paź 26, 2021 11:58 am
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.

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

: wt paź 26, 2021 3:04 pm
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.

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

: wt paź 26, 2021 3:08 pm
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.

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

: wt paź 26, 2021 3:21 pm
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.

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

: wt paź 26, 2021 10:07 pm
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.