als ein guten morgen am anfang deines postings wäre kommunikativ gewesen.
das geht. die frage ist nur, was für eine farbe die ergebnisse zwischen drin haben sollen, also diejenigen, dié nicht beste oder schlechteste sind...
außerdem: hast du überhaupt schon erfahrung mit vba? wenn ich dir nämlich ein paar zeilen schreibe, ist es natürlich interessant, ob du die für deinen bedarf anpassen kannst, oder ob du deine tabelle entsprechend anpassen mußt...
gruß, axel
Die Datentabelle hat max. 40 Einträge, wobei mögliche 0%-Werte im Diagramm unterdrückt werden sollen.
Die Farbbereiche: rot: > 0 - < 85%, gelb: 85- < 90%, grün >= 90%
VBA-Grundkenntnisse habe ich, bislang allerdings kaum im Zusammenhang mit Diagrammen.
Vielen Dank im Voraus!
MfG
Jörg
hier ein kleines programm. die tabellen-bereiche und auch titel-bezeichnung/achsenbeschriftung kannst du dir ja noch aus irgendwelchen zellen in variablen holen und einbinden.
ansonsten viel spaß beim anpassen und probieren.
gruß, axel
es funktioniert. Allerdings besteht das Diagramm ja eigendlich bereits. Es wird aus der Datentabelle per Auswahlfeld für den jeweils ausgewählten Monat erstellt. Gibt es eine Möglichkeit, anhand eines vorhandenen Ranking-Diagramms die (waagerecht angeordneten!) Balken einzufärben?
Ein weiteres Problem: Die Anzahl der Datensätze ist zwar mit 40 konstant. Es kann aber durchaus vorkommen, dass in einem Monat für ein Team keine Daten vorhanden sind. Dann erhalte ich einen #DIV/0! oder #NV!-Fehler und der Max-Wert in Deinem Programm kann nicht ermittelt werden. Wenn derartige Zellen in der Datentabelle (stehen nach Sortierung immer am Schluss!) vorkommen, müßten Sie vom Programm "aussortiert" werden.
Vielen Dank im Voraus!
Gruss
Jörg
reißerisches betreff, was? nee, mal im ernst: sehe ja immer wieder beiträge von dir die richtig gut sind und lerne sehr gerne dazu. wie mache ich das denn:
ohne select?
gruß, axel
mein programm war eigentlich auch eher als denkanstoß gedacht. ich bin eigentlich auch noch ein ziemlicher anfänger. versuch mal selbst weiter zu kommen indem du den makrorekorder benutzt und mein programm etwas nachvollziehst. konkrete einzelfragen kann ich dir gerne noch beantworten aber das noch mal umzustricken, dafür ist mir das wetter zu schön.
kleine hilfe: klick mal auf eine säule, dann noch mal (kein doppelklick!) und dann mit der rechte maustaste. dann hast du das ganze untermenue um farben zu ändern. wenn du jetzt den makrorekorder anwirfst kannst du dir alle befehle (inklusive dem farbänderungsbefehl den ich gerade beschrieben habe) selbst zusammenstricken.
gruß, axel
Mal ein Beispiel zu der Frage weiter oben ohne select, die
Prozentwerte habe ich nicht genauso genommen:
Sub Prozentstaffel()
Dim arrWerte As Variant, SC As Long, SCC As Long, B As Long
Dim pts As Points
SCC = ActiveSheet.ChartObjects(1).Chart.SeriesCollection.Count
For SC = 1 To SCC
arrWerte = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(SC).Values
Set pts = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(SC).Points
For B = LBound(arrWerte) To UBound(arrWerte)
If arrWerte(B) <= 0.5 Then
With pts(B).Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
ElseIf arrWerte(B) >= 0.9 Then
With pts(B).Interior
.ColorIndex = 14
.Pattern = xlSolid
End With
Else
With pts(B).Interior
.ColorIndex = 36
.Pattern = xlSolid
End With
End If
Next
Next
End Sub
Gruß L.Vira
Option Explicit
Sub Bereich()
Dim Anz As Long, LZ As Long
LZ = [a2].End(xlDown).Row
Anz = Range("a2:a" & LZ).Rows.Count
MsgBox Anz
End Sub
Sub Prozentstaffel()
Dim arrWerte As Variant, SC As Long, SCC As Long, B As Long
Dim pts As Points
SCC = ActiveSheet.ChartObjects(1).Chart.SeriesCollection.Count
For SC = 1 To SCC
arrWerte = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(SC).Values
Set pts = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(SC).Points
For B = LBound(arrWerte) To UBound(arrWerte)
If arrWerte(B) <= 0.5 Then
With pts(B).Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
ElseIf arrWerte(B) >= 0.9 Then
With pts(B).Interior
.ColorIndex = 14
.Pattern = xlSolid
End With
Else
With pts(B).Interior
.ColorIndex = 36
.Pattern = xlSolid
End With
End If
Next
Next
End Sub
vielen Dank für Eure Hinweise/Tipps. Die Lösung von L.Vira enthielt genau das Gesuchte. Hab' ne Menge dazugelernt. Nochmals "Danke"!
MfG
Jörg