Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excell 2007 - Zmiana koloru komórki jeżeli wartość odpowiada zakresowi danych

Gandalf67 12 Maj 2015 20:08 936 21
  • #1 12 Maj 2015 20:08
    Gandalf67
    Poziom 9  

    Witam.

    Próbowałem korzystać z wbudowanego kreatora formatowania warunkowego ale bez spodziewanych rezultatów.

    Mam w arkuszu dwie kolumny z danymi. Powiedzmy dla ułatwienia: dni tygodnia w jednej i miesiące w drugiej. Chciałbym aby po wybraniu w komórce (nazwijmy ją X) jednego z dni tygodnia - jej kolor zmienił się na np. żółty a przy miesiącach - niebieski.

    Z gory dziękuję za ew. podpowiedzi.

  • #2 12 Maj 2015 20:19
    lesławek
    Poziom 31  

    To znaczy że chcesz, aby kolor się zmienił po wybraniu komórki? Bo tak napisałeś, czy masz tam listę wyboru i przy wybraniu dowolnego dnia tygodnia chcesz zmienić ten kolor? Bo widzisz ciężko się domyślić, co poeta ma na myśli bez tego arkusza...

  • #4 12 Maj 2015 20:30
    Gandalf67
    Poziom 9  

    Piszę z telefonu to trudno z tym arkuszem będzie. Dla zobrazowania:

    Kolumna A: imiona męskie
    Kolumna B: imiona kobiece

    Komórka C1: jak wpiszę cokolwiek z kolumny A kolor komórki C1 zmieni się na niebieski. Jeżeli w tej samej komórce wybiorę jedną z wartości kolumny B - zmieni ona kolor na różowy.

    Mam nadzieję że to ułatwi.

  • Pomocny post
    #5 12 Maj 2015 20:36
    marek003
    Poziom 40  

    Wykorzystaj formatowanie warunkowe, a w warunku wykorzystaj funkcję licz.jeżeli() i gdy wynikiem funkcji będzie jeden lub więcej to niech się komórka sformatuje na czerwono.

    Dodaj drugi warunek do formatowania warunkowego analogicznie jak pierwszy tylko na drugą grupę danych i tyle.

    dodane po chwili
    ---------------------------------------
    Zerknąłem że kolega pshemo13 już podpowiedział ci właściwie jak to zrobić.

  • #6 13 Maj 2015 10:18
    Gandalf67
    Poziom 9  

    Dziękuję za podpowiedzi – funkcja ‘Licz.jeżeli’ zadziałała.

    Jako że pozostało mi już tylko 5 punktów na założenie nowego tematu postanowiłem korzystając z okazji zaoszczędzić je i zadać dodatkowe pytanie w tym wątku. Tym razem przygotowałem się bardziej starannie niż poprzednio.
    W załączniku przedstawiłem bardzo uproszczony schemat arkusza z którym męczę się w pracy. Męczę się bo mam już swoje lata a nowa wersja Excel’a jest dla mnie baaardzo nieprzyjazna i jakoś nie intuicyjna. Wracam do meritum. Cały zeszyt podałem w pigułce na jednym arkuszu. Mamy trzy sekcje:

    1. BAZA DANYCH – tu wstawiam dane wyjściowe – kierowcy nasi, wynajęci (kurierzy), nasze pojazdy i nazwy firm wynajmujących kurierów
    2. TABELA na której ustalamy obsadę poszczególnych tras. Codziennie różni kierowcy na różnych trasach . W kolumnie Pojazd wstawiam pojazd (3.5 tony lub 7.5 tony) dla naszych kierowców. Jako że nie wiemy jakim samochodem przyjedzie wynajęty kurier – do tabeli dodajemy (formuła) tylko nazwę firmy kurierskiej.
    3. WYDRUK – to arkusz finałowy. W kolumnie POJAZD powinien być wstawiony numer naszego pojazdu (L7:L14) lub nazwa firmy kurierskiej (O7:O11)


    Potrzebuje pomocy w dwóch miejscach:

    1. Jakim sposobem zmusić Excel do wstawienia właściwej wartości w kolumnie WYDRUK (U5:U14), czyli albo numer (powiedzmy rejestracyjny) pojazdu albo – nazwę firmy kurierskiej?
    2. Czy wybierając dane z list rozwijanych np. (D6:D15) można przy okazji pobierać (skopiować) formatowanie (kolor) źródłowej komórki?

    Z góry dziękuję z ewentualnie okazaną pomoc.

    Piotr

  • Pomocny post
    #7 13 Maj 2015 11:42
    marek003
    Poziom 40  

    Proszę.
    Wystarczy w "wydruku" zmienić nazwę trasy a reszta danych sama się uzupełni.



    Na marginesie podpowiem, że jak ktoś ci pomoże na forum to po zalogowaniu przy jego wypowiedzi wciśnij mu przycisk "pomógł"

  • #8 13 Maj 2015 18:14
    Gandalf67
    Poziom 9  

    Dzięki wielkie za pomoc! Działa super. O to właśnie mi chodziło. Jeszcze tylko zapytam się o ten punkt drugi z mojego postu: jest taka możliwość aby kolor wypełnienia komórki źródłowej mógł być przenoszony do innej np. Z Bazy danych do Wydruku? Tak aby pojazdy, nazwiska kierowców, kurierów i firm zachowały kolory nadane im w Bazie Danych? Ręczne formatowanie każdego z (40 w oryginale ) rzędów w dwóch kolumach to syzyfowa praca biorąc pod uwagę fakt że w oryginale są scalane komórki i nie mogę po prostu skopiować formatu.

  • Pomocny post
    #9 13 Maj 2015 21:37
    marek003
    Poziom 40  

    Jeżeli chodzi o przenoszenie formatowania to excel właściwie nie ma żadnych funkcji. Można to zrobić jedynie poprzez makro (VBA) lub "pisaniną" poprzez formatowanie warunkowe i to w excelu 2007 i powyżej, bo niższe mogą mieć tylko max 3 warunki.
    Ten kto zna jako-tako programowanie w VAB może sobie poradzić. Ten kto nie ma pojęcia na początku upadnie, bo makro rządzi się innymi prawami niż funkcje. Przestawienie jednej komórki może wpłynąć na działanie całego makra.

    Tak więc formatowanie funkcjami excela nie przejdzie. Pozostaje formatowanie warunkowe (ale to "pisanina") oraz VBA, jednak tu ma znaczenie wszystko: położenie komórki, cel komórki więc można pracować jedynie na pliku wynikowym (z oryginalnym ustawieniem komórek). W dodatku każda modyfikacja arkusza może się wiązać z modyfikacją kodu makra bo to już jest programowanie, więc ...

    W przykładzie masz jako formatowanie warunkowe. Zobacz warunki. Oczywiście nie formatujesz każdej komórki oddzielnie tylko całą grupę komórek(w tym przypadku kolumnę) oczywiście w warunku uwzględniając znaki $ lub nie.
    Oczywiście zmieniasz tylko nazwy tras to zadziała "automat". Zmiany realizujesz przez "wytyczne" dla trasy w pierwszej tabeli a kolory są w formatowaniu warunkowym.

  • #10 13 Maj 2015 22:10
    Gandalf67
    Poziom 9  

    Dzięki za informację. Przynajmniej wiem na czym stoję. Popracuję nad Twoim przykładem - będzie co robić w weekend :-)

  • #11 15 Maj 2015 12:27
    Gandalf67
    Poziom 9  

    Aby zaoszczędzić na punktach, chciałbym pociągnąć temat i poruszyć kolejny problem związany z formatowaniem komórki.

    W załączonym zeszycie są dwie kolumny z danymi:

    Kolumna A - Żródło danych
    Kolumna B - rozwijana lista pobierająca dane z Kolumny A

    Pytanie brzmi: jest jakiś prosty sposób aby po wybraniu jakiejkolwiek wartości z listy(B) - jego odpowiednik(A) - zmienił kolor komórki? (Czyli Walczak i Szymanek w Kolumnie A powinni mieć teraz np. niebieskie tło komórki).

    Czemu pytam? W oryginale, każda z kolumn jest o wiele dłuższa i każda znajduje się w innym Arkuszu (tego samego Zeszytu). Wybierając wartość (nazwiska) w Kolumnie B - po przejściu do Kolumny A (inny Arkusz) - mam kolorowe potiwerdzenie, które nazwiska wybrałem.

    W zasadzie chodzi mi o prostą (wizualną) weryfikację danych, że wszystkie nazwiska zostały na dany dzień gdzieś przypisane :) i nikogo nie pominięto ani nie zdublowano na Arkuszu z listą rozwijaną (B).

    Z góry dziękuję za pomoc.

    Piotr.

  • #12 15 Maj 2015 13:25
    lesławek
    Poziom 31  

    Tylko makro żeby to napisać potrzebny jest ten arkusz. Właściwie to prościej byłoby wygenerować listę pominiętych/zdublowanych

  • #13 15 Maj 2015 16:18
    Gandalf67
    Poziom 9  

    Dzięki za szybką odpowiedź. Originalnego zeszytu nie mogę teraz uploadowac bo nie jestem w pracy. Ale byłbym w stanie makro zaadaptować gdybyś podesłał podpowiedź bazując na wstawionym przykładzie. Choć nie ukrywam że również z chęcią zobaczył bym jak miałaby wyglądać ta lista pominietych / zdublowanych - nigdy tego nie próbowałem. Byłbym wdzięczny za przykład zastosowany na moim pliku.

  • #15 15 Maj 2015 19:35
    marek003
    Poziom 40  

    Makro to ostateczność.
    Przecież akurat to spokojnie można załatwić formatowaniem warunkowym.


    dodane po chwili
    ---------------------------------------
    A co do przedstawionego makra owszem działa ale jakbym mógł słówko (no dwa) :) :
    Trochę obciąża komputer bo wykonuje się za każdą zmianą w arkuszu - należało by ograniczyć działanie do zmian występujących tylko w zakresie drugiej tabelki.
    I druga rzecz:
    po zakończeniu procedury warto zerować zmienne "deklarowane" za pomocą set bo nie potrzebnie siedzą w pamięci.

  • #16 15 Maj 2015 20:28
    lesławek
    Poziom 31  

    Po pierwsze, to nie prosiłem o radę jak będę potrzebował to poproszę. Po drugie jeśli już tak dbasz o każdy bajt to powinieneś chyba zamieścić poprawiony plik...

    Opinia z microsoft comunity na temat:

    There is no need to set any local variable to Nothing at the end of a sub, because the memory manager does this automatically.

    If you call a sub the (VBA-) stack is increased automatically, any local variable is place inside this memory structure and the stack shrinks automatically if the sub ends and any local variable is removed.

    Only global object variables in normal modules should be set to Nothing to release the object from memory. Forget anything else.

    Co do handlera to faktycznie masz rację, tyle że autor ma inne zakresy...

  • #17 16 Maj 2015 00:08
    Gandalf67
    Poziom 9  

    Panowie dziękuję ponownie za okazaną pomoc. Jak zwykle metoda kolegi marek003 to przysłowiowy strzał w dziesiątke: łatwo i przystępnie (łatwo - jak sie już to zobaczyło :)) . Co do kolego lesławka - niesety nie mogę się wypowiedzieć - bo wygląda, jakby makro nie działało u mnie. Sama ikonka pliku pokazuje wykrzyknik - czyli coś nie tak może? Nowy Excel poprostu mnie dobija - żeby znaleźć jakieś opcje to muszę wpierw 'wygooglować' jak się tam dostać (np. do makr).

    Jako że mam tylko 4pkt (otwarcie 1go nowego tematu) to będę się co jakiś czas pojawiał tutaj z nowym zapytaniem. Poprawiam dokument ułatwiający zarządzaniem moją zmianą w pracy. Sporo tam namieszano i w wolnych chwilach staram się to w miarę sił naprostować. Kiedy skończę - chciałbym poddać go fachowej kontroli. Forma 'wyrażenia wdzięczności' - do uzgodnienia :)

    Pozdrawiam i miłego weekendu!

  • #18 17 Maj 2015 20:10
    marek003
    Poziom 40  

    Za stary jestem na takie przepychanki :)
    :arrow: Lesławek, nie irytuj się, nie miałem zamiaru Ciebie obrazić (i nie wiedzę powodu by moją sugestię tak traktować).
    Jestem ze starej szkoły gdzie uczyli mnie że należy sprzątać samemu po sobie a nie zrzucać to na innych w tym przypadku menadżera pamięci. Poza tym "dobre zasady" pisania kodu przynoszą plusy jak zacznie się pisać w innych językach które mogą być mniej "nowoczesne".
    Ale z drugiej strony masz racje: Jeżeli dany język programowania już na to pozwala to po co "zaśmiecać" kod niepotrzebnymi komendami, więc ok. nie potrzebnie się wyrwałem z nietrafioną w tym przypadku poradą.


    lesławek napisał:
    ...jeśli już tak dbasz o każdy bajt to powinieneś chyba zamieścić poprawiony plik...

    A tu przyznaję, że nie wiem co poprawić (oprócz tego że kolory nie odpowiadają wersji poniżej 2007, ale to nie ma wpływu na bajty)
    Ale jeżeli coś jest nie tak to napisz, bo ja jestem otwarty na wszelkie sugestie (człowiek uczy się przez całe życie) i jeżeli coś źle robię to spróbuje się poprawić.

    :arrow: Gandalf67 Aby łatwo "dochodzić" do makr włącz na wstążce "menu" zakładkę (czy jak to się nazywa) "Deweloper"
    Plik - Opcje - Dostosowanie wstążki - i zaznacz w prawym okienku "Deweloper" i potem OK.
    Przez to menu będziesz miał dostęp do kodu jak i do innych "ciekawostek" excela.

  • #19 17 Maj 2015 21:30
    lesławek
    Poziom 31  

    No muszę przyznać, że mnie też trochę poniosło, twój sposób z formatowaniem warunkowym faktycznie jest lepszy, w tym wypadku. Oczywiście do momentu, gdy bazy nie zaczną rosnąć w sensie ilości wierszy, makro można w prosty sposób na to przygotować czego jednak też nie uczyniłem ustawiając obszary na sztywno...

  • #20 07 Lip 2015 18:14
    Gandalf67
    Poziom 9  

    Witam ponownie.

    Mam kolejny problem z formatowaniem warunkowym komórek. Tym razem chciabym uniknąć duplikowania się wartości (nazwisk) wstawianych w jednej kolumnie za pomocą listy rozwijanej. Lista jest długa i byłaby bardzo pomocna opcja ostrzegająca że jakieś nazwisko zostało już użyte. Niestety - nie mogę skorzystać z automatycznej opcji podświetlania duplikatów bo dodatkowo, w kolumnie wstawiam dwie, powtarzające się cyklicznie wartości - które, chciałbym aby były pomijane podczas wyszukiwania duplikatów. Poniżej załączam uproszczony przykładowy plik.

    Chciałbym aby:

    * Nazwiska przypadkowo zdublowane podświetliły sie na jakiś ostrzegawczy :) kolor lub byłby wygenerowany komunikat z informacją że dane nazwisko juz było wybrane.
    * Powtarzające się wpisy ANULOWANO i PRZENIESIONO miały obecny kolor wypełnienia jak ten w przykładzie - czyli były ignorowane przez wyszukiwanie duplikatów.

    Z góry dziękuję za pomoc i ew. przykłady rozwiązania problemu :)

  • #22 09 Lip 2015 17:28
    Gandalf67
    Poziom 9  

    Cudownie! Ogromne dzięki za pomoc - po raz kolejny.

 
Promocja -20%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
tme