Eigene Icons/Symbole zum Menüband hinzufügen

Wie man das Menüband individuell gestalten und um eigene Register und Sektionen erweitert kann, wurde vor einiger Zeit im Beitrag "Makro als Add-In einbetten" illustriert. Für die gewünschten Funktionen gibt es diverse Standard-Symbole, die man verwenden kann. Dies ist eine Übersicht:

StandardIcons

Je nach Anwendungsfall lässt sich jedoch kein passendes Bild finden - oder man strebt grundsätzlich eine komplett eigene Lösung an. Hier wird dargestellt, wie ein selbst erstelltes Symbol eingefügt werden kann: Die Bilddatei sollte im Format .png und quadratisch sein. Da es kleine Icons sind, sollten die Masse nicht über 256x256 Pixel sein. Ich habe ein Bild in Photoshop mit den Massen 100x100 Pixel erstellt und lokal abgespeichert:

ArrowPlus10

Die Funktion, die über dieses Symbol abgerufen werden soll, ist eine Erhöhung des selektierten Wertes um 10%. Um dieses Beispiel zu illustrieren, habe ich eine simple Umsatzplanung für das nächste Jahr erstellt:

Umsatzplanung2020

Es soll über die angesprochene Funktion entweder die aktuelle Menge oder der jetzige Preis um 10% erhöht werden, da sich der Umsatz ohnehin aus Preis * Menge zusammensetzt. Um dies zu bewerkstelligen, legst Du folgendes Makro an:

Sub IncreaseBy10Percent()

Dim CurrentValue As Double
Dim NewValue As Double

CurrentValue = ActiveCell.Value
NewValue = CurrentValue * 1.1
ActiveCell = NewValue

End Sub

(Beachte: Es sind keinerlei Kontrollen und Sicherheiten eingebaut. Es wird nicht überprüft, welcher Wert in der selektierte Zelle steht oder ob gar ein Bereich ausgewählt wurde - das kann zu Fehlermeldungen führen!)

Office RibbonX Editor

Um das Custom-Icon einzufügen, verwenden wir die Software "Office RibbonX Editor" (analog "Custom UI Editor"). Es handelt sich dabei nicht um ein Microsoft Produkt. Fernando Andreu hat das Tool auf GitHub zur Verfügung gestellt (hier geht es zur Release-Seite).

Nach dem Öffnen der Datei ist das gewünschte Excel-File auszuwählen (File → Open). Daraufhin fügen wir - je nach Excel-Version - einen "Custom UI Part" ein (ich verwende "Office 2010+"). Dies erfolgt via Rechtsklick auf die Excel-Datei im Editor:

InsertCustomUiPart

Als nächstes ist die erstellte Grafik einzufügen. Gehe dazu auf "Insert Icons". Wie im Screenshot unten ersichtlich ist das Icon ebenfalls innerhalb des Editors auf der linken Seite (Navigation) aufgeführt. Der fertige Code, um das entsprechende Icon ("ArrowPlus10.png") in ein neues Menüband-Register "Eigene Makros" und der Sektion "Umsatzplanung" einzubetten, ist unten dargestellt. Am Ende dieses Beitrags ist zudem der Code als "Zitat" zu finden - für Copy+Paste-Zwecke. Nach einer Anpassung in dem Editor kannst Du jederzeit auf "Validate" klicken, um den Code zu testen. Speichere die Änderungen im Editor ab ("Save") und öffne das Excel-File erneut.

RibbonXCode

Die obigen Bezeichnungen wie "Menüband-Register" oder "Sektion" können individuell ausgestaltet werden. Auch die Anordnung/Reihenfolge des Menübands kann hier beeinflusst werden (in Zeile 4: "insertAfterMso="). Im fertigen Screenshot unten habe ich unser eigenes Register hinter "TabHome" eingefügt, damit es auf der Abbildung besser ersichtlich ist:

RibbonSolution

Ein Klick auf diesen individuell gestalteten "Button" erhöht daraufhin den selektierten Wert wie gewünscht um 10%.

Dies ist der Code für den "Custom UI Part":

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
<tabs>
<tab id="customTab" label="Eigene Makros" insertAfterMso="TabHelp">

<group id="customGroup" label="Umsatzplanung">
<button id="customButton1" label="Erhöhe Wert" size="large" onAction="IncreaseBy10Percent" image="ArrowPlus10" />

</group>
</tab>
</tabs>
</ribbon>
</customUI>

Kriterienbereich im Spezialfilter (mit Zellbezug)

Im kürzlich veröffentlichten Beitrag rund um die Filter-Funktionen in Excel wurde auch der Spezialfilter aufgeführt. Wir haben da behandelt, wie man den Spezialfilter auch auf andere Tabellenblätter anwenden kann. Es gingen im Nachgang vereinzelte Anfragen von Lesern zum Spezialfilter und dessen "Kriterienbereich" ein. Gerne vertiefe ich dieses Gebiet in diesem Blog weiter.

Das folgende Beispiel basiert auf einer Namensliste mit den Angaben "Nachname" und "Vorname":

SpezialfilterNamensliste

Mittels Filter sollen nur diejenigen Einträge angezeigt werden, deren Nachname (Spalte A) mit "B" und deren Vorname (Spalte B) mit "G" beginnt. Mit dem herkömmlichen Filter kann man die Einträge pro Spalte filtern, indem man in der Suche "B*" oder für die Spalte B analog der Abbildung unten die Einträge mit "G*" eingrenzt.

SpezialfilterFilterA

Unter Verwendung des Spezialfilters und dem "Kriterienbereich" kann man dies jedoch aus einem Guss heraus erledigen. Wir erfassen die Kriterien mit denselben Überschriften auf einem separaten Tabellenblatt:

SpezialfilterKriterien

Um den Spezialfilter zu aktivieren, gehen wir auf die Namensliste und selektieren eine beliebige Zelle innerhalb der Liste (Überschrift oder ein Eintrag selbst, das spielt keine Rolle). Gehe via Menüband auf "Daten" und klicke in der Rubrik "Sortieren und Filtern" auf "Erweitert".

SpezialfilterMenueband

Im nun angezeigten Fenster ist direkt der gesamte "Listenbereich" (die Namensliste) als Vorschlag selektiert. Wähle nun auf dem Kriterien-Tabellenblatt den Bereich "A1:B2" aus und klicke auf "OK". Deine Namensliste wird basierend auf diesen Kriterien gefiltert. Unten aufgeführt siehst Du die entsprechende Selektion und das gefilterte Resultat.

SpezialfilterKriterienbereich

SpezialfilterResultat

Vergleichsoperatoren wie "grösser als"

Als Erweiterung zum obigen Beispiel fügen wir der Namensliste nun Umsatzzahlen zu, die wir mittels Vergleichsoperatoren (grösser als, kleiner als) ebenfalls selektieren möchten. Bettler Gabriela hat einen Umsatz von 200, während Bruhin Gustav lediglich 80.- ausgegeben hat. Ein weiteres Kriterium soll nun sein, dass die Einträge zusätzlich nach Umsatz gefiltert werden. Die Kriterienliste wird um eine Spalte C - "Umsatz" ergänzt. Das Kriterium darin ist beispielsweise ">100" (ohne Gänsefüsschen/Anführungs- und Schlusszeichen!); wir wollen also nur die Einträge anzeigen, bei denen der Name mit "B" und der Vorname mit "G" beginnt und zudem der Umsatz höher als 100.- ist. Wähle dazu im Spezialfilter (wie oben illustriert) einfach den Kriterienbereich "A1 bis C2" aus, um zusätzlich nach dem eingepflegten Umsatz-Kriterium zu filtern.

SpezialfilterKriterien2

Tipps & Tricks zum Filter

Die Filterfunktionen in Excel sind äusserts populär und werden auf den unterschiedlichsten Tabellen angewandt. Mit einigen Tipps & Tricks kann man sich die Arbeit damit deutlich vereinfachen.

Filtern über das Kontextmenü (Rechtsklick)

Die herkömmliche Vorgehensweise, um eine Tabelle zu filtern, ist die Selektion via Überschriftszeile. Alternativ kann man jedoch auch innerhalb der Tabelle auf einen Wert klicken, nach dem man filtern möchte. So muss man nicht Werte oder Zahlen (insbesondere komplizierte) im Suchfeld des Filters selbst eingeben oder hineinkopieren. Wie im Screenshot unten ersichtlich ist, kann man so zudem nach weiteren Kriterien filtern, wie beispielsweise der Zell- oder der Schriftfarbe. Dies erlaubt es zum Beispiel, nach negativen und rot eingefärbten Zahlen zu suchen.

Wiederholt man diesen Schritt auf einer zweiten Spalte, dann wird der vorherige Filter nicht entfernt, sondern es behalten beide Kriterien Gültigkeit.

Dein Filter erkennt übrigens automatisch, ob innerhalb der Spalte Texte oder Zahlen stehen. Für Zahlen ist zu erwähnen, dass man Kriterien wie "Kleiner als..." oder auch "Zahlen über oder unter dem Durchschnitt" berücksichtigen kann:

Filter_Zahlenfilter

Der Spezialfilter

Um aus einer bestehenden Tabelle eine Unikatsliste zu erstellen, eignet sich der Spezialfilter. Damit wird bezweckt, den Input für Dropdown-Listen oder Gültigkeitsprüfungen zu generieren. Aus der ersten Abbildung oben soll beispielsweise eine Liste ohne Duplikate für die Spalte D ("Teams") generiert werden. Den Spezialfilter findest Du unter "Daten" → "Erweitert":

Filter_Spezialfilter

Sobald Du auf "Erweitert" klickst, nimm bitte folgende Einstellungen vor: Wähle als Aktion "An eine andere Stelle kopieren", damit Du die Unikatsliste von der Ursprungstabelle trennst. Im Beispiel oben sind mehrere Spalten vorhanden und wir möchten lediglich mit den Werten in Spalte "D" operieren; deshalb passen wir den Listenbereich entsprechend an. Wähle danach noch den Zielbereich, wo die Liste hinkopiert werden soll. Beachte, dass bei "Kopieren nach" häufig Schwierigkeiten auftreten, da anscheinend nicht in ein anderes Tabellenblatt geschrieben werden kann. Es tritt die Meldung auf "Nur gefilterte Daten können in das aktive Blatt kopiert werden.". Es gibt jedoch eine Möglichkeit, auf die ich gleich eingehen werde. Für den Moment führen wir die Unikatsliste rechts von der bestehenden Tabelle ein - also beispielsweise ab Zelle "Y1". Damit die Duplikate entfernt werden, ist noch der entsprechende Haken bei "Keine Duplikate" zu setzen:

Filter_SpezialfilterSettings

Zum Abschluss gehe ich hier noch darauf ein, wie der Spezialfilter auf ein anderes Tabellenblatt angewandt werden kann. Selektiere hierzu als allererstes das Ziel-Tabellenblatt - also da, wo das gefilterte Ergebnis angezeigt werden soll. Wenn Du nun auf den Spezialfilter gehst ("Daten" → "Erweitert"), dann kannst Du den Listenbereich auf das Ursprungstabellenblatt beziehen. Die Einstellungen lauten demnach wie folgt:

Filter_SpezialfilterSettings2

Das Resultat: Die gefilterten Werte werden nun korrekt auf einem separaten Blatt wie zum Beispiel "Parameter" aufgeführt.