Discussion:
[Excel] Formatowanie warunkowe
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
zbiniek
2005-12-27 13:06:34 UTC
Permalink
Witam!

Dawno nie pisalem, ale spotkalem sie z nastepujacym problemem:
Chcialbym wykorzystac formatowanie warunkowe do sprawdzania danych.

W arkuszu mam takie dane:

|A |B |C |D |
----------------------------------------
01|Nazwa|aa |ab |Status|
02|dom02|bleb | |a |
03|dom03| |blab| |
04|dom04| |cost|b |

Teraz o co mi chodzi: chcialbym, zeby w kolumnie A (Nazwa) w wierszu
dla ktorego w kolumnie D (Status) jest wpis "a" lub "b" tlo komorki
bylo w kolorze czerwonym. Czyli u mnie w komorce A2 i A4. Napisalem
nastepujaca formule, ktora wklepalem w formatowaniu warunkowym w
komorce A2:
=NIE(CZY.PUSTA(ADR.POŚR(ADRES(2;PODAJ.POZYCJĘ("STATUS";$1:$1;0);4))))

Moge na sztywno podac numer kolumny "Status", ale u roznych osob ta
kolumna jest w roznych miejscach. Dzieki niej najpierw szukam, w ktorej
kolumnie jest "Status", pozniej pobieram adres i na koncu sprawdzam czy
jest pusta. Dla ulatwienia sobie pracy zaczalem wlasnie od tego, czyli
sprawdzam czy jest pusta, a nie od razu czy jest wpis "a" lub "b".
Problem jednak mam najwiekszy gdy formule wklepie w formatowanie
warunkowe i gdy chce malarzem formatow przeniesc formatowanie do
dalszych komorek. Po prostu formula ta nie zmienia sie w dalszych
komorkach, a wydaje mi sie, ze powinna. Wg mnie powinno byc tak:
w A3:
=NIE(CZY.PUSTA(ADR.POŚR(ADRES(3;PODAJ.POZYCJĘ("STATUS";$1:$1;0);4))))
w A4:
=NIE(CZY.PUSTA(ADR.POŚR(ADRES(4;PODAJ.POZYCJĘ("STATUS";$1:$1;0);4))))
itd.

Chyba, ze cos robie zle.
Czy ktos moze mi w tym pomoc?

pzdr i z gory dziekuje

zbiniek
Tajan
2005-12-27 18:12:27 UTC
Permalink
Witam!

U�ytkownik "zbiniek" <***@go2.pl> napisa� w wiadomo�ci news:***@g43g2000cwa.googlegroups.com...
Witam!

Dawno nie pisalem, ale spotkalem sie z nastepujacym problemem:
Chcialbym wykorzystac formatowanie warunkowe do sprawdzania danych.

W arkuszu mam takie dane:

|A |B |C |D |
----------------------------------------
01|Nazwa|aa |ab |Status|
02|dom02|bleb | |a |
03|dom03| |blab| |
04|dom04| |cost|b |

(....)

=NIE(CZY.PUSTA(ADR.POŠR(ADRES(3;PODAJ.POZYCJÊ("STATUS";$1:$1;0);4))))
w A4:
=NIE(CZY.PUSTA(ADR.POŠR(ADRES(4;PODAJ.POZYCJÊ("STATUS";$1:$1;0);4))))
itd.

Chyba, ze cos robie zle.
Czy ktos moze mi w tym pomoc?

Po prostu Excel nie rozumie, ¿e pierwszy argument funkcji ADRES, to numer
wiersza. Traktuje go jako zwyk³± liczbê i nie stosuje odwo³añ wzglêdnych
przy kopiowaniu. Trudno zreszt± oczekiwaæ, aby by³o inaczej :-)
Odwo³ania wzgledne s± stosowane wobec "prawdziwych" adresów, wiêc taki
musisz zastosowaæ. Przyk³adowo, taka formu³a, wstawiona do komórki A2,
bêdzie kopiowana prawid³owo:

=NIE(CZY.PUSTA(INDEKS(2:2;1;PODAJ.POZYCJÊ("Status";$1:$1;0))))

bowiem u¿y³em bowiem rzeczywistego adresu.

Tajan
zbiniek
2005-12-28 09:32:00 UTC
Permalink
Witam!
Po prostu Excel nie rozumie, że pierwszy argument funkcji ADRES, to numer
wiersza. Traktuje go jako zwykłą liczbę i nie stosuje odwołań względnych
przy kopiowaniu. Trudno zresztą oczekiwać, aby było inaczej :-)
Odwołania wzgledne są stosowane wobec "prawdziwych" adresów, więc taki
musisz zastosować. Przykładowo, taka formuła, wstawiona do komórki A2,
=NIE(CZY.PUSTA(INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0))))
bowiem użyłem bowiem rzeczywistego adresu.
Tajan
Jak zwykle nie zawiodlem sie!!!

Z tego co widze, to dziala to na zasadzie funkcji wyszukaj.pionowo, ale
w innej postaci. Numer wiersza faktycznie sie kopiuje - za co bardzo
dziekuje. Jednak teraz mam kolejny problem: mianowicie jak przerobic
Twoja funkcje, aby uwzglednic wpisy w kolumnie Status ("a" lub "b")
tak, jak zakladalem to na poczatku.

Jeszcze raz dziekuje i prosze o pomoc.

pzdr

zbiniek
Tajan
2005-12-28 09:51:05 UTC
Permalink
Witam!


W artykule news:***@f14g2000cwb.googlegroups.com,
niejaki(a): zbiniek z adresu <***@go2.pl> napisał(a):

(...)
Post by zbiniek
Z tego co widze, to dziala to na zasadzie funkcji wyszukaj.pionowo,
ale w innej postaci. Numer wiersza faktycznie sie kopiuje -
To akurat nie jest do kończ prawda. Funkcja Indeks, w tym przypadku zwraca z danego obszaru wartość komórki leżącej na
przecięciu podanego wiersza i kolumny.

za co
Post by zbiniek
bardzo dziekuje. Jednak teraz mam kolejny problem: mianowicie jak
przerobic Twoja funkcje, aby uwzglednic wpisy w kolumnie Status ("a"
lub "b") tak, jak zakladalem to na poczatku.
Zastosuj funkcję warunkową LUB, czyli:

=LUB(INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0)))="a";
INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0)))="b")

Możesz też, ewentualnie, wykorzystać jednakowo sformatowane, dwa warunki formatowania warunkowego i przypisać do nich
pojedyńczy warunek. Do jednego:
=INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0)))="a"
a dla drugiego:
=INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0)))="b"

Przy czym, przy dużej ilości danych, ten drugi sposób może okazać się nieco szybszy.

Tajan
zbiniek
2005-12-29 07:57:07 UTC
Permalink
Witam!
Post by Tajan
=LUB(INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0)))="a";
INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0)))="b")
Możesz też, ewentualnie, wykorzystać jednakowo sformatowane, dwa warunki formatowania warunkowego i przypisać do nich
=INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0)))="a"
=INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0)))="b"
Przy czym, przy dużej ilości danych, ten drugi sposób może okazać się nieco szybszy.
Tajan
Niby to takie proste, a jednak nie wpadlem na to!
Wlasnie o taka formule mi chodzilo. Pozwole sobie tylko ja przerobic do
wlasciwej postaci, bo chyba troszku za duzo w niej nawiasow :)
Dzialajaca postac to:

=LUB(INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0))="T";
INDEKS(2:2;1;PODAJ.POZYCJĘ("Status";$1:$1;0))="U")

Jeszcze raz dziekuje
Nie wiem tylko jak ja sie odwdziecze.

pzdr

zbiniek

Loading...