Gelegentlich lassen sich Zahlen in Excel einfach nicht summieren (siehe Screenshot1). Die Summe liefert den Wert 0. Diese Zahlen sind in der Regel als Text formatiert. Ich nenne sie Text-Zahlen. Häufig entstehen solche Text-Zahlen durch Datenbank - Exporte (Screenshot 1).
Nachfolgend stelle ich zwei Wege vor, wie man aus diesen Text-Zahlen eine ordentliche Summe bilden kann.
Aufgabe:
Angenommen ich habe eine Liste von Wörtern (blaue Tabelle im Bild rechts) und möchte feststellen, ob diese Wörter in einer anderen Liste (grüne Tabelle im Bild links) vorkommen. Dabei sollen auch die Vorkommen gefunden werden, in denen das Wort nur ein Teil des Textes ist. Groß- und Kleinschreibung soll dabei keine Rolle spielen.
Wer regelmäßig Outlook-Kontaktgruppen (Verteiler) erstellt und pflegt, der hat sich vielleicht schon einmal Gedanken darüber gemacht, wie sich diese Arbeit vereinfachen lässt.
Vor einiger Zeit habe ich dazu eine kleine Excel-Anwendung geschrieben
(Siehe Screenshot oben).
Neulich hatte ich ein lange Liste von Dollar-Werten in Excel auszuwerten, die leider nur als Text und nicht als Zahlenwert vorlagen.
Mit der folgenden Formel habe ich die Textwerte in Zahlenwerte umgewandelt.
=WERT(WECHSELN(WECHSELN(WECHSELN(WECHSELN(B4;"$";"");".";"#");",";"");"#";","))
Die Aufgabenstellung lautete,
Wie das realisiert werden kann, möchte ich hier gern vorstellen.
Über eine Anzahl von Tabellenblättern ist die Summe aus einer bestimmten Zelle auf diesen Blättern zu bilden. Die Tabellenblätter sind dabei alle gleich aufgebaut.
Es werden ständig neue Tabellenblätter in die Arbeitsmappe aufgenommen oder von dort entfernt. Die Formel für die Berechnung der Summe soll sich davon nicht beeindrucken lassen.
Wie man das geschickt anstellen kann, möchte ich hier zeigen.
Will man in einem Excel-VBA-Projekt per Programm auf bestimmte Tabellenblätter zugreifen, so eignet sich dazu hervorragend die Eigenschaft CodeName eines Blattes
(siehe Bild 1).
Diese Eigenschaft
Benutzt der Entwickler den CodeName für den Zugriff auf ein Tabellenblatt, so kann der Anwender also den Namen des Blattes nach Belieben ändern, ohne die VBA-Anwendung dadurch in Schwierigkeiten zu bringen. Die Excel-Mappe muss nicht gesperrt werden.
Für den Entwicker wäre es allerdings wünschenswert, dass der CodeName erkennen lässt, welche Funktion das Tabellenblatt in der Anwendung hat (siehe Bild 2).
Im Folgenden zeige ich,
In dieser Excel-Mappe (siehe Download) ist ein Suchwort versteckt. Es ist recht einfach zu erraten. Etwas schwieriger könnte es sein, das Suchwort zu ändern. Schaffst Du es?
Kürzlich stand ich vor der Aufgabe, ein Säulendiagramm mit zwei Datenreihen zu erstellen.
Allerdings waren die Größenordnungen der beiden Datenreihen sehr unterschiedlich. Es musste eine Sekundärachse her.
SVERWEIS() ist eine super EXCEL-Funktion, mit der man nach Informationen in einem Zellenbereich (Matrix genannt) suchen kann. Dabei sucht SVERWEIS in der jeweils ersten Spalte dieser Matrix nach einem bestimmten Wert. Ist der Wert gefunden, kann jeder Wert, der in der gleichen Zeile dieser Matrix steht, zurückgegeben werden (Parameter: Spaltenindex). Eine nette Anleitung dazu findet man im Internet zum Beispiel hier:
https://support.office.com/de-de/article/SVERWEIS-Funktion-0BBC8083-26FE-4963-8AB8-93A18AD188A1
Was ist aber nun, wenn das Suchkriterium, nur Teil der Zeichenketten in der ersten Spalte einer Matrix ist? Für diesen Fall möchte ich drei Lösungen vorstellen.
Vor ein paar Tagen habe ich diesesTastenkürzel vorgestellt, mit dem man in MS Office Absätze und Tabellenzeilen nach oben und unten verschieben kann.
Siehe: https://www.konschak.de/office-zeilen-verschieben
In Excel funktioniert dieses Tastenkürzel leider nicht. Mit ein paar Makros in der PERSONAL.XLSB kann man das Verschieben per Tastenkürzel allerdings auch in Excel ermöglichen.
Das komplette Modul stelle ich unten zum Download bereit.
Seit der DSGVO wünschen sich viele Kunden, dass ihre Daten verschlüsselt werden. Also wurde das Access-Backend eines Kunden mit einem Passwort verschlüsselt. Es gibt in dieser Firma aber auch Anwendungen in Word und Excel, die auf diese Datenbank zugreifen und sich Informationen beispielweise für Kundenbriefe oder Kalkulationen ziehen. Während die Word-Anwendung auch mit der verschlüsselten Datenbank super funktioniert hat, meldete die Excel-Anwendung: "Kein zulässiges Kennwort."
In beiden Fällen wurde die Connection via VBA auf die komplett gleiche Art und Weise hergestellt:
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=[Backend-Dateiname mit Pfad]; Jet OLEDB:Database Password=[Passwort]"
Seit Office 2013 steht der Befehl "Zuletzt verwendete Datei öffnen" auf der GUI nicht mehr für die Übernahme in die Symbolleiste für den Schnellzugriff zur Verfügung. Statt dessen gibt es den Befehl "Öffnen", der zur Liste der zuletzt verwendeten Dokumente (Backstage) führt. Auch der Befehl "Öffnen (Strg+O)", der direkt die Auswahl einer Datei aus dem Office-Öffnen-Dialog ermöglicht, fehlt. Nennt mich altmodisch, aber ich mag die beiden. Ich möchte Euch zeigen, wie man diese Befehle wieder in die Schnellstartleiste aufnimmt.
Benutzerdefinierte VBA-Tabellenfunktionen (User Defined Functions) sind ein mächtiges Instrument, um Excel spezifische Geschäftslogik beizubringen. Zudem verbessern sie entscheidend die Lesbarkeit von Excel-Formeln. Wer hat nicht schon über ein mehrfach verschachteltes Funktionsungetüm gegrübelt, um herauszubekommen, was da eigentlich gerechnet wird?
Manchmal braucht man benutzerdefinierte Funktionen, die immer neu berechnet werden, wenn sich irgendetwas in der Excel-Mappe ändert. Solche Funktionen nennt man volatil. Ein Beispiel für eine volatile Funktion ist übrigens die integrierte Funktion JETZT().
Es ist sehr einfach, eine benutzerdefinierte Funktion volatil zu machen.
Das war für mich eine Überraschung!
Bisher habe ich neue Zeilen in meine (intelligenten) Tabellen eingefügt, indem ich mit der Maus am Tabellen-Ende-Kennzeichen (blauer Haken unten rechts) gezogen habe.
Kürzlich habe ich nun gelernt, dass auch in Excel, so wie in Word, mit der Tab-Taste neue Zeilen an eine Tabelle angefügt werden können und zwar auch, wenn eine Ergebniszeile vorhanden ist (Bild1).
Inhalte unterhalb der Tabelle werden automatisch nach unten verschoben.
Super! Das macht mein Leben leichter.
Manchmal ist es wichtig, dass Zahlenwerte in ihrer originalen Genauigkeit in einer Excel-Tabelle stehen. Die Anzahl der Dezimalstellen ist dann in der Regel unterschiedlich, was das Erkennen der Größenverhältnisse etwas schwierig macht (Siehe Bild 1 linke Spalte).
Schön wäre es, wenn sich Zahlen unabhängig von der Zahl ihrer Dezimalstellen am Komma ausrichten würden (Siehe Bild 1 rechte Spalte).
Hilfreich ist da ein benutzerdefinertes Zahlenformat.
Wusstet Ihr, dass alle beweglichen Feiertage, also die, die nicht jedes Jahr auf den gleichen Tag fallen, von Ostersonntag abgeleitet werden können?
Um für jedes Jahr das Datum von Ostersonntag zu bestimmen hat Karl Friedrich Gauß 1800 eine Formel aufgestellt.
Vielen Dank den findigen Excel-Freaks, die eine Excel-Berechnung daraus abgeleitet haben.
Und so sieht sie aus:
SVERWEIS und WVERWEIS sind prima, helfen aber nicht, wenn mehr als eine Suchbedingung ausgewertet werden muss. Vor Kurzem stand ich vor dieser Aufgabe und bin über folgende, wie ich finde, geniale Lösung gestolpert (http://www.excelformeln.de/formeln.html?welcher=48).
=VERWEIS(1;1/(A3:A12&B3:B12=E3&F3);C3:C12)
Vielleicht kennt Ihr das ja schon, aber falls nicht, dann kann dieser kleine Tipp das Leben mit Excel schon ganz schön erleichtern.
Will man Zellenbereich per Drag&Drop an eine andere, nicht leere Stelle des Tabellenblatts schieben, dann bekommt man die Mitteilung: „Hier gibt es schon Daten. Möchten Sie diese ersetzten?“. Der Zielbereich wird also überschreiben.
Mit einem kleinen Trick kann man den markierten Zellenbereich auch so verschieben, dass er an der Zielposition eingefügt wird.
Für die Anrede im Brief ist durchaus einiges zu beachten:
Diese Logik kann man bereits in die Empfängerliste des Serienbriefes etablieren. Damit wird es auf dem Hauptdokument einfacher.
Hier die Formel:
Wer für Serienbriefe Empfängerlisten aus Excel verwendet, kennt vielleicht das Problem: Werden von dort Uhrzeiten im Serienbrief verwendet, dann erscheint die Uhrzeit im amerikanischen Format (Siehe Bild links).
Abhilfe schafft der Formatschalter \@ "HH:mm" (Siehe Bild rechts).
Von diesen Formatschaltern gibt es viele.
Nützlich ist auch \# "00000" um beispielsweise Postleitzahlen, die in Excel als Zahlen eingetragen sind, immer mit 5 Stellen, also auch mit führenden Nullen, darstellen zu können.
Um einen Geldwert zu formatieren, könnte man beispielsweise den Formatschalter
\# "#.##0,00 €" verwenden. Es werden der Tausender-Trenner, zwei Dezimalstellen und das Euro-Zeichen ausgegeben.
Aktuell finde ich auf den Seiten von Microsoft keine schöne Auflistung aller Formatschalter. Hier (Liste der Feldfunktionen) sind bei den jeweiligen Feldfunktionen immerhin auch Informationen zu Formatschaltern zu finden. Leider sind die nicht vollständig.