Ein Leser aus der Tschechischen Republik fragte nach der Erstellung eines In-Cell-Diagramms, um einen Prozentsatz zu veranschaulichen.
Wenn der Wert in einer Zelle 37% betrug, wie kann ich 37% der Zelle von unten mit einer Farbe füllen?

Mala Singh aus unserer Grafikabteilung hat diese interessante Lösung entwickelt, um den gewünschten Effekt zu erzielen. Mala hat ein Arbeitsblatt erstellt, in dem jede Zeile tatsächlich aus zwei zusammengeführten Zeilen besteht. Die Zellen B2 und B3 werden in einer einzigen Zelle zusammengeführt. Wenn der Wert in B2 geändert wird, passt ein bisschen VBA-Code im Arbeitsblattbereich automatisch die Höhe von Zeile 2 und Zeile 3 an. Zelle C3 ist blau und Zelle C2 weiß gefärbt. Der Effekt ist, dass Spalte C ein Säulendiagramm in der Zelle anzeigt. Dieses Bild zeigt verschiedene Höhen des blauen Balkens in den Zellen C2 bis C13.

Der erste Schritt besteht darin, die Zellen B2 und B3 zu einer einzigen Zelle zusammenzuführen. Sie wählen die Zellen B2 und B3 aus. Wählen Sie im Menü Format, Zellen. Wechseln Sie zur Registerkarte Ausrichtung. Aktivieren Sie das Kontrollkästchen für Zellen zusammenführen. Dies führt dazu, dass B2 & B3 als einzelne Zelle mit dem Namen B2 fungieren.
Lassen Sie Zelle C2 ohne Füllung und verwenden Sie eine beliebige Farbfüllung für Zelle C3.
Der Code für diese Technik wird nicht in ein reguläres Modul eingefügt. Es handelt sich um einen "Ereignishandler" -Code, der für dieses bestimmte Arbeitsblatt im Codemodul platziert werden muss. Lesen Sie den Artikel Ereignismakro, um Pfad und Dateinamen zum Excel-Header hinzuzufügen, um zu sehen, wie das Codemodul für ein Arbeitsblatt geöffnet wird.
Geben Sie den folgenden Code in das Codemodul für Sheet1 ein (oder in das Blatt, mit dem Sie arbeiten).
Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target.Cells If cell.Column = 2 And cell.Row> 1 Then If cell.Value> 1 Or cell.Value < 0 Then cell.Select MsgBox ("Value must be between 0 and 100%") End If If IsEmpty(cell) Or cell.Value = 0 Then cell.Range("B1:B2").RowHeight = 25 'cell.Range("B2").Interior.ColorIndex = xlNone Else On Error Resume Next cell.Range("B1").RowHeight = 50 * (1 - cell.Value) With cell.Range("B2") .RowHeight = 50 * cell.Value '.Interior.Color = RGB(0, 0, 255) On Error GoTo 0 End With End If End If Next End Sub
Sie können den Vorgang des Zusammenführens von Zellenpaaren in Spalte B wiederholen.
Vielen Dank an Mala Singh für diese Lösung. Mala kann kundenspezifische Diagrammlösungen für jeden Bedarf entwerfen. Er trug zum Diagrammkapitel in VBA und Makros für Excel bei.