Werte als Heatmap anzeigen
Zeigen Sie, wie sich Werte über zwei Dimensionen verteilen, etwa Anmeldungen je Wochentag und Stunde, als Tabelle, deren Zellen nach ihrem Wert gefärbt sind: hell für wenige, dunkel für viele.
Voraussetzungen: WKL Forms Object Library 1.62 oder höher.
Lösungsüberblick
Eine Kreuztabellenabfrage liefert je Wochentag eine Zeile und je Stunde eine Spalte. Ein WklGrid zeigt die Abfrage an;
je Stundenspalte färbt eine Farbskala-Regel (wrkColorScale) jede Zelle zwischen MinColor und MaxColor. Da jede
Regel über die Werte ihrer eigenen Spalte skaliert, erhalten alle Regeln dieselben festen Enden (MinValue,
MaxValue). So hat dieselbe Anzahl in jeder Spalte dieselbe Farbe.
Umsetzung
Zwei Abfragen: qryAnmeldungenJeStunde zählt je Wochentag und Stunde, die Kreuztabelle qryAnmeldungenHeatmap macht
aus den Stunden die Spalten 00 bis 23 (mit 0 statt einer leeren Zelle).
-- qryAnmeldungenJeStunde SELECT Weekday([AngemeldetAm], 2) AS Wochentag, HOUR([AngemeldetAm]) AS Stunde, COUNT(*) AS Anmeldungen FROM tblAnmeldung GROUP BY Weekday([AngemeldetAm], 2), HOUR([AngemeldetAm]); -- qryAnmeldungenHeatmap TRANSFORM Nz(COUNT([ID]), 0) AS Anmeldungen SELECT Weekday([AngemeldetAm], 2) AS Wochentag FROM tblAnmeldung GROUP BY Weekday([AngemeldetAm], 2) PIVOT Format(HOUR([AngemeldetAm]), "00") IN ("00","01","02","03","04","05","06","07","08","09","10","11", "12","13","14","15","16","17","18","19","20","21","22","23");
Private Sub Form_Load()
Dim highest As Variant
Dim h As Integer
highest = DMax("Anmeldungen", "qryAnmeldungenJeStunde") ' one scale for all columns
With Me!Grid1.Object
.RecordSource = "qryAnmeldungenHeatmap"
.KeyField = "Wochentag"
.FormatRules.Clear
For h = 0 To 23
With .FormatRules.Add(Format(h, "00"), wrkColorScale)
.MinColor = RGB(255, 255, 255)
.MaxColor = RGB(31, 78, 121)
.MinValue = 0
.MaxValue = Nz(highest, 1)
End With
Next h
End With
End Sub
Hinweise
- Ohne feste Enden reicht eine Farbskala vom kleinsten bis zum größten geladenen Wert ihrer Spalte. Für eine einzelne Spalte passt das; in einer Heatmap über mehrere Spalten würde so jede Stunde nach ihrem eigenen Höchstwert gefärbt.
MidColorergänzt eine dritte Farbe, etwa Rot, Gelb und Grün um einen Zielwert (MidValue). MitMidColor= -1 (Vorgabe) hat die Skala zwei Farben.- Zellen mit dunklem Hintergrund erhalten weiße Schrift. Eine
ForeColorder Regel geht vor. - Eine Regel weiter oben in der Liste, die einen Hintergrund setzt, geht der Farbskala vor.
- Im Windows-Kontrastmodus färbt die Farbskala nicht; die Zahlen in den Zellen müssen dann die Aussage tragen.
- Damit die Farben in Excel erhalten bleiben, exportieren Sie wie angezeigt:
ExportToXlsx Pfad, wemWysiwyg. Der Standardexport (wemDataAware) schreibt nur die Werte.