Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

EXCEL - oznaczania kolorem ostrzeżenia

01 Kwi 2009 13:52 2600 5
  • Poziom 36  
    Witam.

    Nawet nie wiem czy dobrze opisałem w tytule o co mi chodzi, bo w jednym zdaniu sie nie da. Do rzeczy:

    EXCEL - oznaczania kolorem ostrzeżenia

    Zakładam, że mam dwa przedmioty: DOM i GARAŻ. DOMów są 3 sztuki, GARAŻy - 2 sztuki. Wstawiam to w tabelkę (screen niżej) w odpowiednich przedziałach czasowych (od-do); powiedzmy że jest to wynajem "na godziny" /bez skojarzeń proszę ;) /. W tym układzie jak na screenie widać, że 3x DOM zachodzi na siebie w godzinach 10:00...11:00 (na screenie źle narysowałem ramkę, ale wiadomo o co chodzi). Czyli w tym czasie nie ma żadnego DOMu do wynajęcia. GARAŻe zachodzą na siebie od 12:00...12:30. W tym czasie też nie ma GARAŻy do dyspozycji.
    Chodzi mi o to, żeby w tych godzinach wiersze A...A' i B były zaznaczone innym kolorem oznaczającym wizualnie, że tego "towaru" w tych godzinach nie ma do dyspozycji; jest zajęty. Gdybym np. rozciągnął jakiś DOM czy GARAŻ o kilka wierszy, żeby zaznaczenie wynajęcia wszystkich "egzemplarzy" było wskazywane od razu.

    Da się coś takiego zrobić? Czy wymagania mam za wysokie? ;) . Szkałem w necie sporo czasu, ale nie wiem nawet jak sformułować zapytanie w Google itp, żeby dostać wynik. Dlatego piszę do Was o poradę.
  • Pomocny post
    Moderator Programowanie
    Jeżeli te pionowe zakresy są komórkami scalonymi, to nic z tego.
    Jeżeli usuniesz scalenie, to masz co najmniej dwa wyjścia:
    1. Wstawić np. iksy w tym samym kolorze co tło i sprawę załatwisz funkcją: JEŻELI(ORAZ(warunki)) w połączeniu z funkcją TERAZ.
    2. Zastosować VBA wykorzystując właściwość Interior.ColorIndex komórek.

    Dodano po jakimś czasie:
    3. No i jeszcze trzeba sprawić by arkusz "sam" się odświeżał co jakiś czas. Można zastosować funkcję (VBA) Sleep w pętli lub wykorzystać właściwość Application.OnTime
  • Poziom 36  
    Dziękuję. Pokombinuję z tym.
  • Poziom 40  
    Ja pokombinowałem z formatowaniem warunkowym. Niestety może być tylko 3 warunki więc nie jest to do końca tak jak chciałeś. Komórkę "uwaga" spełnia komórka z godziną w danym dniu.
    Jeżeli jest maksymalna (lub większa) ilość litery d (DOM) od ustawionej (3) [można zmienić] godzina zmienia kolor na ciemnozielony
    Jeżeli jest maksymalna (lub większa) ilość litery G (Garaż) od ustawionej (2) [można zmienić] godzina zmienia kolor na ciemnopomarańczowy.
    Jeżeli i to i to komórka z godziną przyjmuje kolor czerwony.

    Nie wiem czy to się przyda - ale zawsze jakieś wyjście.

    Aby było tak jak ty chcesz (pełny wiersz w danym kolorze) potrzebne by było większe makro i więcej danych tzn jak naprawdę ma to wyglądać i jak konkretnie reagować.

    Obsługujesz to wpisując w danej "półgodzinie" literę d lub g wielkość nie ma znaczenia - czyli wynajęcie na dany czas.
  • Poziom 40  
    :arrow: adamas_nt
    Nie za bardzo mogę zrozumieć co robi twój arkusz. O danej minucie zaznacza która godzina obowiązuje w danej chwili?

    Pozwoliłem sobie jak zawsze zerknąć w makro (dla własnej nauki oczywiście) bo to innymi słowy wymuszenie przeliczenia co minutę (co mi czasami by się przydało.
    Pozwoliłem sobie zapętlić procedurę liczącą czas (może się przyda):

    Code:
    Sub jeden()
    
    Cells(1, 5) = Format(Now(), "hh:mm")
    Calculate
    Application.OnTime Now + TimeValue("00:01:00"), "jeden"
    End Sub


    U mnie działa.
    Nie wiem czy to czasem jakoś nie narasta - nie zajmuje z czasem pamięci (w procedurze otwarta procedura i co minutę następna) ale przy dwóch procedurach jest to samo. Z tym że w pierwszej druga w drugiej pierwsza itd.
    Czy może jest tak że procedura jeden włącza procedurę dwa (w moim przypadku jeden) ale sama się wyłącza nie obciążając pamięci?
    Takie zamyślenie laika.