Anzahl verarbeiteter Datensätze mit VBA protokollieren

Verarbeitete Datensätze protokollieren

Heute stelle ich Ihnen eine Möglichkeit vor, die Anzahl der verarbeiteten Datensätze fortlaufend zu zählen. Das ist insbesondere dann sehr hilfreich, wenn Sie kostenpflichtige Webservices wie zum Beispiel die Google Maps API nutzen. Sie erhalten so einen sehr einfachen Überblick über die Anzahl der abgefragten Datensätze und können entsprechend die anfallenden Kosten kalkulieren. Auch ist es möglich einen monatliches Abfragebudget zu definieren, das nicht überschritten werden soll. Darüber hinausgehende Anfragen an die API-Schnittstelle können anschließend unterbunden werden.

Die nachfolgend vorgestellten VBA Routinen beinhalten allerdings nur die notwendigen Hilfsmittel um entsprechende Datenabfragen zu zählen und zu protokollieren. Das Beispiel beinhaltet kein Makro um tatsächlich eine Anfrage an die Google Maps API zu senden. Das sollte an dieser Stelle nur ein Hinweis für ein praktisches Anwendungsbeispiel sein.

VBA Routinen zum Messen der verarbeiteten Datensätze

Im Wesentlichen werden für das zählen und protokollieren der verarbeiteten Datensätze zwei VBA Routinen zusätzlich zur eigentlichen VBA Routine für die Verarbeitung der Datensätze benötigt. Bevor die Datensätze verarbeitet werden, wird zunächst der Stand der bereits verarbeiteten Datensätze aus einer externen Datei eingelesen. Hierfür wird im Beispiel eine einfache unformatierte Textdatei im TXT-Format genutzt. Reihenfolge der Verarbeitung:

Weiterlesen

 

Alter berechnen in Excel

Eine auf den ersten Blick ganz simple Aufgabenstellung hat sicher schon den ein oder anderen frustriert. Es geht um die genaue Berechnung des Alters in Excel. Sollten Sie gerade auch genau zu diesem Thema im Internet recherchiert haben, wird es Sie vielleicht trösten, dass selbst der Beitrag im offiziellen Microsoft Support fehlerhafte Lösungsvorschläge anbietet. Zum Staunen und Schmunzeln habe ich den Beitrag verlinkt, allerdings sollten Sie die angebotenen Lösungsansätze getrost ignorieren. 

Exakte Berechnungen mit der DATEDIF-Funktion

Die beste Funktion um das exakte Alter zu berechnen taucht im oben genannten Beitrag gar nicht auf. Dabei können Sie mit der Funktion DATEDIF() sehr einfach die Differenz zwischen zwei Datumswerten berechnen. Die Funktion ist auch sonst sehr versteckt und taucht weder im Funktionsassistenten noch im Register Formeln auf. Und genau aus diesem Grund möchte ich Ihnen die Funktion und ihre Einsatzmöglichkeiten in diesem Beitrag vorstellen. Die Funktion ist wie folgt aufgebaut:

=DATEDIF(Startdatum;Enddatum;“Zeiteinheit“)

Die Funktion DATEDIF() setzt sich aus drei Funktionsargumenten zusammen. Das Startdatum wird in unserem Beispiel das Geburtsdatum sein. Für das Enddatum nehmen wir das aktuelle Tagesdatum. Hierfür verwenden wir die Funktion HEUTE() und erhalten so ein dynamisches Datum, dass sich täglich ändert. Alternativ kann natürlich auch ein bestimmter Stichtag als statisches Datum dienen. Zum Schluss wird noch eine Zeiteinheit benötigt. Im ersten Schritt soll das Alter in Jahren berechnet werden. Die Zeiteinheit hierfür lautet „Y“ (Years). Alternativ stehen noch diese weiteren Zeiteinheiten zur Verfügung:

Einheit Rückgabewert
„Y“ Anzahl der vollendeten Jahre zwischen den beiden Datumswerten
„M“ Anzahl der vollendeten Monate zwischen den beiden Datumswerten
„D“ Anzahl der vollendeten Tage zwischen den beiden Datumswerten
„MD“ Differenz zwischen den Tagen in Startdatum und Enddatum. Monate und Jahre werden ignoriert.
„YM“ Differenz zwischen den Monaten in Startdatum und Enddatum. Tage und Jahre werden ignoriert.
„YD“ Differenz zwischen den Tagen in Startdatum und Enddatum. Jahre werden ignoriert.

DATEDIF-Funktion an praktischen Beispielen

In der Beispieldatei stehen die Geburtstage in Spalte B und dienen für die DATEDIF()-Funktion als Startdatum. Um einige mögliche Einsatzmöglichkeiten zu demonstrieren wird die Funktion genutzt um vier unterschiedliche Fragestellungen zu lösen. In Spalte C wird das Alter in Jahren, in Spalte D der nächste Geburtstag, in Spalte E der nächste Geburtstag in Tagen und in Spalte F der nächste Geburtstag in Monaten und Tagen berechnet.

Ausgehend vom heutigen Tagesdatum wird das Alter in Jahren berechnet. Hierfür reicht die Kombination der beiden Funktionen DATEDIF() und HEUTE().

=DATEDIF(B2;HEUTE();"Y")

Bei der Ermittlung des nächsten Geburtstag werden noch weitere Funktionen benötigt. Hierfür werden zusätzlich noch die Datumsfunktionen DATUM(), JAHR(), MONAT() und TAG() genutzt.

=DATUM(JAHR(B2)+DATEDIF(B2;HEUTE();"Y")+1;MONAT(B2);TAG(B2))

Das Ergebnis dieser Formel wird dann schließlich für die Ermittlung der Tage, beziehungsweite Monate und Tage bis zum nächsten Geburtstag in den Spalten E und F als Enddatum verwendet.

=DATEDIF(HEUTE();D2;"D")
=DATEDIF(HEUTE();D2;"YM")&" Monaten, "&DATEDIF(HEUTE();D2;"MD")&" Tagen"

Excel Mustermappe:

Genaues Alter mit Excel berechnenalter_berechnen.xlsx

 

Mit VBA in Excel ein Tabellenblatt löschen oder hinzufügen

Anordnung der Tabellenblätter

Mit wenigen Zeilen VBA Code können Sie beliebige Tabellenblätter löschen oder neu hinzufügen. In diesem Beitrag stelle ich Ihnen die einzelnen Funktionen vor. Weil das Löschen von Daten generell immer sehr problematisch ist, zunächst allerdings noch ein paar Hinweise um versehentlichen Datenverlust zu vermeiden.

Wenn Sie selbst „von Hand“ ein Tabellenblatt löschen wollen, erhalten Sie zunächst eine Sicherheitsabfrage mit dem Hinweistext:

„Microsoft Excel löscht dieses Blatt endgültig. Möchten Sie den Vorgang fortsetzen?“

Sicherheitsabfrage: Tabellenblatt löschen
Sicherheitsabfrage: Tabellenblatt löschen

Auch wenn Hinweistexte häufig ungelesen weggeklickt werden, diesen Hinweis sollten Sie nicht sorglos ignorieren. Löschen Sie das Tabellenblatt grundsätzlich nur, wenn Sie sich sicher sind. Prüfen Sie vorher unter anderem auch, ob es von anderen Tabellenblättern noch Bezüge zu dem Tabellenblatt gibt, das Sie löschen wollen. So vermeiden Sie, dass Formeln anschließend den Fehler #BEZUG! statt dem gewünschten Ergebnis anzeigen. Sobald Sie die Datei nach dem Löschen des Tabellenblatts speichern ist der Datenverlust ansonsten irreparabel.

Weiterlesen

 

Textdatei in Excel 365 importieren

Microsoft ersetzte still und heimlich in Office 365 den komfortablen Text Import Wizard der früheren Excel-Versionen durch die „Get & Transform“-Werkzeuge. Die Werkzeuge gab es parallel auch schon in den älteren Excel-Versionen und konnten über die Funktion „Neue Abfrage“ aufgerufen werden. Der bisherige Text Import Assistent wurde bedauerlicherweise in Excel 365 und zuvor bereits in Excel 2016 (ab Version 1704) deaktiviert.

Text-Import Assistent

Mit den aktuellen „Get & Transform“-Werkzeugen werden die Daten durch das Herstellen einer Verbindung zur Textdatei über Power Query importiert. Die Funktion ist sehr leistungsfähig, aber für den statischen Import bestimmter Daten schlicht und einfach überdimensioniert und deutlich komplexer. Wer nur gelegentlich eine Textdatei (z.B. txt oder csv) ins Excel-Format konvertieren möchte, wird hierfür bestimmt eine möglichst schnellere und einfachere Lösung suchen.

Weiterlesen

 

Kostenlose Excel Schulung – Excel Tipps & Tricks

Zum 10-jährigen Jubiläum von makro-excel.de gibt es heute ein besonderes Geschenk: Die Excel Schulungsfolien „Excel Tipps & Tricks“ zum kostenlosen Download.

Die Folien erklären auf 39 Seiten viele interessante Fragen zum Thema effektiv arbeiten mit Excel. Geeignet für Einsteiger und Fortgeschrittene, werden viele klassische Fragestellungen im Umgang mit Excel beantwortet. Dabei werden auch Hinweise gegeben um das „Zerschießen“ von Excel Arbeitsmappen zu verhindern und die Datenqualität der Daten in Excel zu sichern.

Weiterlesen

 

Sonderzeichen Suchen und Ersetzen in Excel

HTML Sonderzeichen

Mit Excel werden häufig Daten aus anderen Systemen importiert, analysiert, weiterverarbeitet und anschließend für die Nutzung in anderen Programmen oder Datenbanken auch häufig wieder exportiert. Sonderzeichen können dabei häufig zu Problemen führen. In diesem Beitrag erhalten Sie Lösungsansätze für eine reibungslose Verarbeitung der Daten in Excel.

Weiterlesen

 

Mehrere Autofilter in einem Excel Tabellenblatt nutzen

Jeder der mit Excel arbeitet wird früher oder später mit dieser Funktion seine Erfahrungen machen. Die Rede ist hier von einer der beliebtesten Funktionen in Excel, dem Autofilter. Mit wenigen Klicks können Sie nach dem Aktivieren der Funktion über die Symbolleiste „Start“ oder „Daten“ beliebige Spalten Sortieren oder Filtern.

Sortieren und Filtern

Leider hat der Autofilter einen entscheidenen Nachteil. In jedem Tabellenblatt kann maximal ein Autofilter aktiviert werden. Beim Versuch für einen zweiten Zellbereich einen Autofilter zu aktivieren, verschwindet stattdessen der erste bereits gesetzte Autofilter. Mit einem Klick auf „Filtern“ wird also entweder ein Autofilter eingerichtet, oder wieder entfernt, sofern bereits ein Autofilter im Tabellenblatt aktiviert ist.

Weiterlesen

 

Excel Makros mit dem Makro-Rekorder aufzeichnen

Der integrierte Makro Rekorder in Excel ist, unabhängig von vorhandenen Programmierkenntnissen, ein sehr nützliches Tool. VBA Anfänger können über die Aufzeichnung wiederkehrender Arbeitsabläufe auch ohne Programmierkenntnisse ganz oder teilweise automatisieren. Aber auch fortgeschrittene Anwender können den Makro Rekorder sinnvoll nutzen. Insbesondere wenn einzelne VBA Funktionen nicht bekannt sind, können einzelne Schritte aufgezeichnet und anschließend im VBA Editor nachvollzogen werden.

Teil 1: Erste Schritte – Aufruf vom VBA-Editor
Teil 2: Excel Makros mit dem Makro-Rekorder aufzeichnen

Zu beachten ist allerdings, dass der aufgezeichnete VBA Code in vielen Fällen deutlich umständlicher ist, als selbst geschriebene VBA Befehle. Die Folgen von aufgeblähten Programmzeilen können sich bei größeren Projekten in verlängerten Laufzeiten direkt bemerkbar machen. Ein weiterer Nachteil ist, dass der aufgezeichnete Programmcode aufgrund seiner Länge leichter unübersichtlich wird.

Weiterlesen

 

Günstige Lizenzen für Microsoft Office 2016 / 2013

Die ersten Muster-Dateien im Blog wurden noch mit Microsoft Excel 2003 erstellt. Inzwischen bin ich auf Microsoft Office 2013 umgestiegen, da Microsoft keine Updates mehr für das Office Paket 2003 bereitstellt.

Leider erreichen mich immer wieder Anfragen, weil die VBA-Codes bei älteren Office Versionen oder Software von anderen Firmen nicht oder nicht korrekt funktionieren. Entscheidende Unterschiede gibt es bei den unterstützten Dateitypen, aber auch bei einigen VBA Funktionen. Die Funktion Application.FileSearch gibt es z.B. ab Excel 2007 bzw. Access 2007 nicht mehr. Möchten Sie die VBA-Codes auf meiner Seite nutzen, ist es wichtig ein kompatibles Office Paket von Microsoft zu nutzen.

Weiterlesen

 

Excel Spaltenbuchstaben ermitteln

In VBA wird im Allgemeinen nicht der Spaltenbuchstabe, sondern die Spaltennummer verwendet. Spalte A entspricht der Spaltennummer 1, Spalte B der Spaltennummer 2, Spalte C der Spaltennummer 3 usw.

Möchten Sie nun aus einer Spaltennummer wieder den Spaltenbuchstabe ermitteln gibt es hierfür verschiedene Ansätze, die je nach Verwendungszweck mehr oder weniger geeignet sind.

Fehlerhafter VBA Code auf der Microsoft Support Seite

Im Internet gibt es allerdings auch Lösungsansätze, die nicht ungeprüft verwendet werden sollten. So stellt z.B. selbst Microsoft auf einer Support Seite einen fehlerhaften Algorithmus für die Ermittlung des Spaltenbuchstaben vor.

Zunächst einmal ist dieser generell nur auf zwei Stellen ausgelegt. Seit der Excel 2007 sind inzwischen jedoch 16.384 Spalten bis zum Spaltenbuchstabe XFD vorhanden. Um alle Spaltenbuchstaben ermitteln zu können muss also in jedem Fall ein Algorithmus genutzt werden, der dreistellig die Spaltennummer in den jeweiligen Spaltenbuchstabe(n) umwandeln kann. Davor gab es einen Spaltenbereich der nur 256 Spalten bis Spalte IV unterstützte.

Aber auch in diesem Fall hätte der Algorithmus auf der Microsoft Seite Fehler produziert. Der erste Fehler tritt nämlich bereits bei Spalte 53 (BA) auf. Hier wirft der Microsoft Alogrithmus A[ aus. Mit jedem Durchlauf von A bis Z verschiebt sich fortan der Fehler um eine weitere Spalte (CA, CB / DA, DB, DC / EA, EB, EC, ED / …). Ab Spalte 4508 (FQJ) erzeugt das Makro dann sogar die erste Fehlermeldung.

Excel VBA Spaltenbuchstabe aus Zahl ermitteln

Nachfolgend nun zwei Lösungsvorschläge, die für alle 16.384 Spalten aus der Spaltennummer den Excel Spaltenbuchstaben ermitteln.

Weiterlesen