Witam.
Chciałbym stworzyć wskaźnik w Excelu, tylko nie wiem do końca jak to zrobić, aby przy wartości granicznej wykres liniowy zmieniał kolor?
Poniżej 1 kolor czerwony, a powyżej zielony.
Proszę o pomoc.
Witam.
Chciałbym stworzyć wskaźnik w Excelu, tylko nie wiem do końca jak to zrobić, aby przy wartości granicznej wykres liniowy zmieniał kolor?
Poniżej 1 kolor czerwony, a powyżej zielony.
Proszę o pomoc.
Z wykresem liniowym jest pewien problem. Dużo łatwiej takie zadanie jest wykonać na wykresie kolumnowym skumulowanym. Przykładowe rozwiązanie - takie jak poniżej - jest w załączniku.
Wykres liniowy jest o tyle kłopotliwy, że koloruje segmenty między znacznikami - stąd cała trudność.
Czy zadowoli Pana wykres liniowy ze znacznikami, ale bez widocznych linii? Takie rozwiązanie tez podrzucam w tym samym załączniku.
W obydwu przykładach przyjąłem, że graniczną wartością jest 2.
Z kolumny "kolor" wartości poniżej 2 usunięte zostały ręcznie. Użycie funkcji JEŻELI powodowało, że Excel traktował komórki z wynikiem funkcji jako wartości zerowe, mimo zaznaczenia opcji "odstępy" w sekcji "puste i ukryte komórki".
Załączniki
Z wykresem liniowym jest faktycznie bardzo trudna sprawa.
Kolega Andrzej przedstawił rozwiązanie dla wykresu kolumnowego, ja natomiast dla wykresu warstwowego.
Zakładam ze wykres warstwowy już mamy.
Naszym celem jest oznaczenie wyników do 1 na czerwono powyżej na zielono.
Najpierw wyjaśnię co będziemy musieli policzyć.
Wykorzystamy formatowanie wykresu za pomocą gradientu.
Jeżeli wejdziemy w formatowanie serii danych możemy wybrać wypełnienie gradientowe.
Gradient może być konkretnego typu.
Posiadać kierunek przejścia.
Możemy także określać ilość, kolor i położenie stopni gradientu.
Nas będzie interesowało następujące ustawienie gradientu:
Typ liniowy, kąt 270, pierwszy stopień czerwony drugi stopień zielony.
Oba stopnie muszą mieć wyliczone położenie pokrywające kolorem czerwonym tylko do 1.
Położenie wylicza się poprzez podzielenie 1 przez wartość maksymalną występującą na wykresie.
Oczywiście, że przy każdej zmianie wartości musielibyśmy ponownie wszystko wyliczać więc użyjemy do tego VBA.
Wchodzimy do Edytora VBA (ALt F11).
W otwieramy arkuszu na którym zrobiliśmy wykres:
Wstawiamy kod:
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim maksimum As Single Dim stopien As Single ' jezeli wykonana zostanie zmiana w zakresie danych do wykresu If Not Intersect(Target, Range("a1:b13")) Is Nothing Then ' wyliczamy maksimum maksimum = WorksheetFunction.Max(Range(Range("b2"), Range("b2").End(xlDown))) ' jezeli nie jest większe od 1 If maksimum < 1 Then 'to położenie stopni 100% czyli cały czerwony stopien = 1 Else ' a jak nie oblicz stopień stopien = 1 / maksimum End If Worksheets(1).ChartObjects(1).Activate ActiveChart.FullSeriesCollection(1).Select With Selection.Format.Fill .Visible = msoTrue .TwoColorGradient msoGradientHorizontal, 4 ' kolory mozna zmienić :) .ForeColor.RGB = RGB(255, 0, 0) .BackColor.RGB = RGB(0, 255, 0) .GradientStops(1).Position = stopien .GradientStops(2).Position = stopien End With End If End Sub
Testujemy rozwiązanie.
Patrz załącznik.
Załączniki
Przykład Krzysztofa nasunął mi jeszcze jeden - chyba najprostszy pomysł. Do tabeli z danymi wystarczy dodać jedną kolumnę zawierającą wartość graniczną, a następnie zrobić z tego zwykły wykres liniowy.
Linię prezentującą granicę można zamienić na powierzchnię, która będzie półprzejrzysta. Zmieniam typ wykresu seryjnego na powierzchniowy. Po drobnej korekcie kolorów może to spełniać nasze potrzeby.
Ponieważ linia jest zielona, a płaszczyzna żółta, linia poniżej górnej płaszczyzny zaczyna wyglądać na niebieską.
Można też obie serie danych wyświetlać jako wykres powierzchniowy z półprzezroczystością obszaru granicznego.
Przykład w załączniku.
Możliwości zabawy wykresami jest dość dużo. Miłej zabawy.
Załączniki
Problem rozwiązany!
Udało się dzięki inspiracji przykładem Krzysztofa z wypełnieniem obszarów gradientem.
Linia również może być kolorowana gradientem. Wybrałem gradient z dwóch kolorów z bardzo ostrym przejściem między nimi i WYSZŁO!
Ponieważ przejścia gradientu ustawia się za pomocą wartości procentowych - wystarczy gdzieś na boku wyliczyć, jakim procentem jest wartość graniczna na tle maksymalnej wartości i taki procent ustawić na suwaku położenie dla obu kolorów. Wyliczyłem, że w tej tabeli jest to wartość bliska 58%. Na obrazku poniżej suwak koloru czerwonego ma nieco mniejszą wartość, bo chciałem, aby był też widoczny zielony suwak. Jednak dla obu suwaków należy ustawić wartość położenie bliską 58%.
Efekt ostateczny poniżej.
Problem rozwiązany - przykład w załączniku.
Panie Bartłomieju i Krzysztofie: bardzo dziękuję Wam za inspirację. :-)
Dochodzę do wniosku, że tekst "nie da się" - w przypadku Excela w ogóle nie powinien mieć zastosowania, jak widać, to tylko kwestia pomysłu i znalezienia odpowiednich narzędzi.
Pozdrawiam.
Andrzej.
Załączniki
Ja mam jeszcze jeden pomysł i taki zastosowałem stąd nie wchodziłem na ten post:
Dajcie Panowie znać, czy jest to zrozumiale?
W załączniku moje rozwiązanie.
Załączniki