Ich kann keine Möglichkeit finden, die Farbe einer Excel-Datenleiste basierend auf dem Wert zu ändern. Aktuelle Formatierungsoptionen lassen nur unterschiedliche Farben basierend auf positiven/negativen Werten zu. Ich verwende derzeit Excel 2010.
Ich möchte, dass die Farbe eines Datenbalkens als "rot" angezeigt wird, wenn der Wert zwischen 0 und 0,3 liegt, "gelb", wenn der Wert zwischen 0,3 und 0,6 liegt, und "grün", wenn der Wert zwischen> 0,6 liegt.
Würde mich wirklich über jede Info freuen, die die Leute teilen könnten.
Vielen Dank,
TB
Datenbalken unterstützen nur eine Farbe pro Satz. Die Idee ist, dass die Länge der Datenleiste einen Hinweis auf hoch, mittel oder niedrig gibt.
Bedingte Farben können mit Farbskalen erzielt werden.
Was Sie beschreiben, klingt wie eine Kombination aus beiden, aber das gibt es in Excel nicht, und ich sehe keine einfache Möglichkeit, es zu hacken.
Sie könnten eine Art "In-Cell-Diagramm" verwenden, das populär war, bevor Sparklines kamen. Verwenden Sie eine Formel, um ein Zeichen zu wiederholen (im Screenshot ist es das mit Marlett-Schrift formatierte Zeichen g
), und ändern Sie die Schriftfarbe anschließend mit der bedingten Formatierung.
Verwenden Sie das Unicode-Zeichen 2588 mit normaler Schrift, um ein besseres "Bar"-Feeling zu erzeugen.
Bearbeiten: Nicht jedes Unicode-Zeichen wird in jeder Schriftart dargestellt. In diesem Fall zeigt der Unicode 2588 gut mit der Schriftart Arial, nicht jedoch mit dem Standard-Calibri von Excel. Wählen Sie Ihre Schriftarten entsprechend aus. Das Dialogfeld Einfügen> Symbol hilft bei der Suche nach geeigneten Zeichen.
Dieser Artikel beschreibt einen Trick, der die Aufgabe erfüllt:
http://www.Excel-user.com/2012/05/conditional-formatting-bar-chart.html
Ich setze eine bedingte Formatierung in der Zelle neben der Datenleiste ein, die die Farbe basierend auf dem Wert in der Zielzelle ändert (grün, gelb, rot, orange). Ich schleife dann durch den VBA unten, um die Farbe der Datenleiste basierend auf der bedingten Formatierung in der benachbarten Zelle zu aktualisieren.
Dim intCount As Integer
Dim db As DataBar
On Error Resume Next
For intCount = 9 To 43 'rows with data bars to be updated
Worksheets("Worksheet Name").Cells(intCount, 10).FormatConditions(1).BarColor.Color = Worksheets("Worksheet Name").Cells(intCount, 11).DisplayFormat.Interior.Color
Next intCount
In Ihrem Fall ist das Markieren der Zelle besser geeignet, da wir keine Datenleiste mit mehreren Farben bilden können
Bedingte Formationg> Regeln verwalten ...> Neue Regel
Wählen Sie unter "Regeltyp auswählen" die Option "Formel zum Bestimmen der zu formatierenden Zellen verwenden" und legen Sie Ihre Regeln dort fest
Anstatt eine bedingte Formatierung für einen Zellbereich zu erstellen, formatierte ich jede Zelle einzeln mit VBA basierend auf den beiden folgenden Subs. Das Ergebnis wird im Link unter dem Code angezeigt. Hoffe das hilft.
' The purpose of this sub is to add a data bar to an individual cell
' The value in the cell is expected to be decimal numbers between -1 and 1
' If the value is greater than or equal to -0.1 and less than or equal to 0.1, then display green bars
' If the value is less than -0.1 and greater than -.2, OR greater than 0.1 and less than 0.2 then yellow bars
' All other scenarios display red bars
Sub Add_Data_Bar(rngCell As Range, dblValue As Double)
' Clears existing conditional formatting from the cell
' Adds a new data bar to the cell
With rngCell.FormatConditions
.Delete
.AddDatabar
End With
' Creates a databar object for the databar that has been added to the cell
Dim dbar As Databar
Set dbar = rngCell.FormatConditions(rngCell.FormatConditions.Count)
' Sets the databar fill type to display as gradient
dbar.BarFillType = xlDataBarFillGradient
' Sets the databar border style
dbar.BarBorder.Type = xlDataBarBorderSolid
' Sets the databar axis position
dbar.AxisPosition = xlDataBarAxisMidpoint
' Sets the minimum limit of the data bar to -1
With dbar.MinPoint
.Modify newtype:=xlConditionValueNumber, newvalue:=-1
End With
' Sets the maximum limit of the data bar to +1
With dbar.MaxPoint
.Modify newtype:=xlConditionValueNumber, newvalue:=1
End With
' Sets the color based on what value has been passed to the sub
' Green
If dblValue <= 0.1 And dblValue >= -0.1 Then
With dbar
.BarColor.Color = RGB(99, 195, 132) ' Green
.BarBorder.Color.Color = RGB(99, 195, 132)
End With
' Yellow
ElseIf (dblValue > 0.1 And dblValue <= 0.2) Or (dblValue < -0.1 And dblValue >= -0.2) Then
With dbar
.BarColor.Color = RGB(255, 182, 40) ' Yellow
.BarBorder.Color.Color = RGB(255, 182, 40)
End With
' Red
Else
With dbar
.BarColor.Color = RGB(255, 0, 0) ' Red
.BarBorder.Color.Color = RGB(255, 0, 0)
End With
End If
End Sub
' Applies the databar formatting to each cell in a range
‘ Call this on the Worksheet_Change event so that the formatting updates when data is refreshed
Sub Loop_Through_Range()
' Range to be looped through
Dim rng As Range
Set rng = Sheet1.Range("A2:A22")
' Range for For Loop
Dim cell As Range
' Loops through each cell in your range
For Each cell In rng.Cells
Call Add_Data_Bar(cell, cell.Value)
Next
End Sub