Dynamische Wortwolke oder tag cloud in Excel erzeugen

Wortwolke - tag cloud mit Excel


Als Wortwolke, Schlagwortwolke oder Stichwortwolke (engl. tag cloud) wird die Informationsvisualisierung bezeichnet, bei der eine Liste mit unterschiedlichen Stichwörtern (tags) analysiert wird und abhängig von der Häufigkeit der vorkommenden Begriffe die Wortgröße entsprechend dargestellt wird.

Wortwolken werden häufig in Webblogs oder Webseiten eingesetzt mit dem Ziel, die häufigsten Stichworte (tags) auf der Seite bzw. in den Beiträgen des Blogs darzustellen. Damit spiegeln Wortwolken das Ziel und den Informationsschwerpunkt einer Homepage wider.

In unserem News-Blog Excel-Live.de ist ebenfalls eine Wortwolke in der rechten Seitenleiste zu sehen.

Ich habe nun eine Wortwolke entwickelt, welche direkt in Excel erstellt werden kann. Damit steht diese Funktion zentral für Auswertungen und Berichte in Excel zur Verfügung. So können beispielweise die Kundenliste, die Liste der Lieferanten oder ähnliche Daten aufbereitet werden.

Funktionsweise der Wortwolke

Auf einem beliebigen Tabellenblatt (in der Beisipieldatei auf dem Blatt "Daten") werden die auszuwertenden Begriffe eingetragen, siehe Abbildung 1. Diese Begriffe dienen als Basis für die Erzeugung der tag cloud.

Eingabe der Begriffe für die Wortwolke

Abbildung 1:

Ermittlung und Analyse der Begriffe

Nachdem die relevanten Begriffe für die Wortwolke eingegeben wurden, müssen diese analysiert und ausgewertet werden. Dies findet auf dem Tabellenblatt "Calc" statt.

Im ersten Schritt wird geprüft, ob es sich bei einem Begriff um ein Unikat oder ein Duplikat handelt. Dies ist wichtig, da davon abhängig eine Liste mit Unikaten erzeugt wird. Das bedeutet, alle doppelten Einträge, die zu einer Veränderung der Schriftgröße führen, werden zunächst eleminiert. Diese Unikatsliste beinhaltet damit nur noch jeden Begriff ein einziges mal und wird für die Darstellung der tag cloud verwendet.

Im der folgenden Abbildung 2 sehen Sie Logik zur die Berechnung der Wortwolken-Logik. Diese beinhaltet neben der Unikats-Liste auch die Auswertung der Häufigkeit einzelner Begriffe, sowie die Zuweisung der Schriftgröße für die einzelnen tags.

Berechnung der Logik für die tag cloud

Abbildung 2:

Die folgende Tabelle gibt einen Überglick über die Formeln in den jeweiligen Zellen:

Zelle A2: =MAX((Daten!A1:A999<>"")*ZEILE(1:999))

Zelle B2: =ZEILE(Daten!A2)
Zelle B3: =WENN(UND(NICHT(ISTLEER(Daten!A3));Daten!A3<>"";ISTNV(VERGLEICH(Daten!A3;BEREICH.VERSCHIEBEN(Daten!$A$2;0;0;ZEILE(Daten!A3)-$B$2;1);0)));ZEILE(Daten!A3);0)  → Diese Formel bis zur Zeile 1000 nach unten kopieren

Zelle C2: =WENN(B2<>0;"U";"D") → Diese Formel bis zur Zeile 1000 nach unten kopieren

Zelle D2: =B2
Zelle D3: =WENN(ODER(D2=MAX(B:B);D2=0);0;BEREICH.VERSCHIEBEN(BEREICH.VERSCHIEBEN($B$2;D2-2;0;1;1);VERGLEICH("U";BEREICH.VERSCHIEBEN($C$2;D2-1;0;$A$2-D2+1;1);0);0;1;1))  → Diese Formel bis zur Zeile 1000 nach unten kopieren

Zelle E2: =WENN(D2<>0;INDEX(BEREICH.VERSCHIEBEN(Daten!$A$2;0;0;$A$2;1);Calc!D2-1);"")  → Diese Formel bis zur Zeile 1000 nach unten kopieren

Zelle F2: =WENN(E2<>"";ZÄHLENWENN(Daten!$A$2:$A$100;Calc!E2);"") → Diese Formel bis zur Zeile 1000 nach unten kopieren

Zelle G2: =WENN(F2<>"";RANG(F2;$F$2:$F$51;-1);"") → Diese Formel bis zur Zeile 1000 nach unten kopieren

Zelle H2: 1
Zelle H3: =WENN(G3<>"";I2+1;"") → Diese Formel bis zur Zeile 1000 nach unten kopieren

Zelle I2: =LÄNGE(E2)+3
Zelle I3: =WENN(H3<>"";LÄNGE(E3)+3+I2;"")  → Diese Formel bis zur Zeile 1000 nach unten kopieren

Zelle J2: =WENN(G4<>"";RUNDEN($L$7+((G4-1)*$M$10);0);"") → Diese Formel bis zur Zeile 1000 nach unten kopieren

Im Bereich L2:M10 wird der Faktor zur Darstellung der Schriftgröße für die einzelnen Wörter, abhängig von deren Bedeutung (Häufigkeit) ermittelt.

Dynamisierung der Wortwolke

Damit die tag cloud wie gewünscht arbeitet, sind noch ein paar Zeilen VBA-Code notwendig. Erfassen Sie dazu den nachfolgenden Code in die entsprechenden Codemodule:

Code-Modul:

Dieser VBA-Code erzeugt die Wortwolke und stellt die Schriftgröße entsprechend pro Begriff ein.

Sub make_cloud()
'** Build the cloud
Set wscalc = ThisWorkbook.Sheets("calc")
Set wscloud = ThisWorkbook.Sheets("cloud")

[wolke].Font.Size = 10

For a = 2 To wscalc.Cells(Rows.Count, 7).End(xlUp).Row

  If wscalc.Cells(a, 7).Value <> "" Then
    
    cloud = cloud & wscalc.Cells(a, 5).Value & "   "
  
  End If

Next a

[wolke].Value = cloud

'** Word-Size definieren
For a = 2 To wscalc.Cells(Rows.Count, 7).End(xlUp).Row
  If wscalc.Cells(a, 7).Value <> "" Then
    s = wscalc.Cells(a, 8).Value
    l = wscalc.Cells(a, 9).Value
  
    With [wolke].Characters(Start:=s, Length:=l).Font
      .Size = wscalc.Cells(a, 10).Value
    End With
  End If
Next a
End Sub

Tabellenblatt "Daten"

Der folgende VBA-Code ruft nach Eingabe eines neuen Begriffs die Prozedur "make_cloud" auf und erstellt sofort die Wortwolke.

Private Sub Worksheet_Change(ByVal Target As Range)
'** Aufruf Prozedur nach Eingabe neuer Begriffe
If Not Application.Intersect(Target, Range("A2:A100")) Is Nothing Then
  make_cloud
End If
End Sub

Tabellenlbatt "Cloud"

Mit Hilfe der folgenden 5 Prozeduren werden die Einstellungsmöglichkeiten über die Schieberegler gesteuert.

Private Sub CommandButton1_Click()
'** Button "Reset"
With ActiveSheet
  .Range("G6").Value = 8
  .Range("G8").Value = 50
  .Range("G10").Value = 200
End With
make_cloud
End Sub

Private Sub ScrollBar1_Change()
'** Aktualisieren der Cloud nach Änderung der Schriftgröße
make_cloud
End Sub

Private Sub ScrollBar2_Change()
'** Cloud high
c = [wolke].Column
Columns(c).ColumnWidth = ThisWorkbook.Sheets("Cloud").Range("G8").Value
End Sub

Private Sub ScrollBar3_Change()
'** Cloud witdh
r = [wolke].Row
Rows(r).RowHeight = ThisWorkbook.Sheets("Cloud").Range("G10").Value
End Sub

Private Sub ToggleButton1_Click()
'** Ein- und Ausblenden der Kurzanleitung über einen ToggleButton
If ToggleButton1.Value = True Then
  ToggleButton1.Caption = "Ausblenden"
  ActiveSheet.Rows("20:30").EntireRow.Hidden = False
Else
  ToggleButton1.Caption = "Einblenden"
  ActiveSheet.Rows("20:30").EntireRow.Hidden = True
End If
End Sub

Einstellungen für die Wortwolke

Die Excel-tag cloud besitzt auch verschiedene Einstellungsmöglichkeiten. So kann neben der relativen Schriftgröße auch die Höhe und Breite der Wortwolke verändert werden. Die Scrollbalken dafür finden Sie auf dem Blatt "Cloude", siehe auch nachfolgende Abbildung 3.

Abbildung 3:

Die Beispieldatei können Sie über den folgenden Link herunterladen und in Ihren Kalkulationsmodellen verwenden.