🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →

Excel AI Blog: VBA Tutorials, Formula Tips & Automation Guides

Expert guides on Excel formulas, VBA automation, data processing, and AI-powered productivity. Learn to master Excel with AI.

VBA Kommentar in Excel — Code auskommentieren, die Apostroph-Regel und warum er nie läuft

VBA Kommentar in Excel — Code auskommentieren, die Apostroph-Regel und warum er nie läuft

Ein Kommentar ist die eine Zeile, die der Compiler garantiert ignoriert — Ihr sicherster Debugging-Griff und zugleich Ihre gefährlichste Dokumentationsgewohnheit. Diese Anleitung erklärt den Apostroph gegenüber Rem, wie Sie mit der versteckten Edit toolbar einen ganzen Block auskommentieren, warum ein Kommentar keine Zeilenfortsetzung überleben kann, den Unterschied zwischen einem Quellcode-Kommentar und einem Zell-Comment-Objekt und die einzigen Kommentare, die sich wirklich lohnen.

Henry
VBA Option Explicit in Excel — aus einem stillen Tippfehler einen lauten Compile error machen

VBA Option Explicit in Excel — aus einem stillen Tippfehler einen lauten Compile error machen

Option Explicit ist die wirkungsvollste einzelne Zeile in VBA, denn ohne sie ist ein vertippter Variablenname kein Fehler, sondern eine brandneue leere Variable, die stillschweigend null zurückgibt. Diese Anleitung zeigt den Silent-Typo-Bug, den sie tötet, warum sie pro Modul gilt und wie die Einstellung Require Variable Declaration sie für Sie hinzufügt, was zu tun ist, wenn Variable not defined in altem Code auftaucht, und warum sie die Deklaration erzwingt, aber nicht die Datentypen.

Henry
VBA Zeilenfortsetzung in Excel — der Unterstrich, seine Regeln und die String-Falle

VBA Zeilenfortsetzung in Excel — der Unterstrich, seine Regeln und die String-Falle

VBA-Zeilenfortsetzung ist ein Leerzeichen gefolgt von einem Unterstrich, mit dem eine lange Anweisung mehrere physische Zeilen umspannen kann, und der Parser entfernt ihn vor dem Kompilieren, sodass sich nur ändert, wie sich die Quelle liest. Diese Anleitung behandelt das Pflicht-Leerzeichen vor dem Unterstrich, warum Sie nicht innerhalb eines String-Literals umbrechen können, warum ein Kommentar eine Fortsetzung tötet, wie der Doppelpunkt das Gegenteil tut, indem er Anweisungen verbindet, und wann Sie dazu greifen.

Henry
VBA Debug.Print in Excel — warum Ihre Ausgabe in einem Fenster landet, das Sie nicht sehen

VBA Debug.Print in Excel — warum Ihre Ausgabe in einem Fenster landet, das Sie nicht sehen

Debug.Print schreibt eine Zeile in das Immediate Window und läuft weiter — der nicht blockierende Weg, eine Schleife ihre Werte streamen zu lassen, statt in MsgBox-Popups zu ertrinken. Diese Anleitung erklärt, warum Debug.Print scheinbar nichts tut, bis Sie das Immediate Window mit Ctrl+G öffnen, warum der rund 200 Zeilen große Puffer frühe Ausgaben still verwirft, warum das Ausdrucken eines Ausdrucks echte Nebenwirkungen auslösen kann, worin es sich von MsgBox unterscheidet, und wann Sie aufhören sollten, ins Fenster zu protokollieren, und stattdessen in eine Datei schreiben.

Henry
VBA Immediate Window in Excel — die Konsole, die Code ausführt, sobald Sie fragen

VBA Immediate Window in Excel — die Konsole, die Code ausführt, sobald Sie fragen

Das Immediate Window ist zwei Werkzeuge in einem — der Ort, an dem die Ausgabe von Debug.Print landet, und eine Live-Konsole, in die Sie eine Zeile VBA tippen und sofort ausführen. Diese Anleitung zeigt, wie die Abkürzung ? jeden Ausdruck auswertet, warum ein ? vor einer Funktion diese Funktion samt ihren Nebenwirkungen tatsächlich ausführt, warum Ihre lokalen Variablen leer erscheinen, solange das Makro nicht im break mode angehalten ist, wie Sie einen Sub oder eine einzeilige Schleife von Hand aufrufen, und wann die Konsole ihren Dienst getan hat und die Logik in ein Modul gehört.

Henry
VBA Breakpoint in Excel — ein Makro einfrieren und Zeile für Zeile durchsteppen

VBA Breakpoint in Excel — ein Makro einfrieren und Zeile für Zeile durchsteppen

Ein Breakpoint friert ein Makro auf einer Zeile ein, bevor sie läuft, und versetzt Sie in den break mode, wo Sie jeden lebendigen Wert lesen und den Code dann mit F8 Zeile für Zeile durchgehen. Diese Anleitung behandelt das Setzen von Breakpoints mit F9, den Unterschied zwischen Step Into und Step Over, warum Breakpoints verschwinden, wenn Sie die Arbeitsmappe schließen, warum eine Stop-Anweisung niemals zu Nutzern gelangen darf, wie Debug.Assert Ihnen einen bedingten Breakpoint gibt, der zur Laufzeit ignoriert wird, und wann Durchsteppen besser ist, als Debug.Print über den Code zu streuen.

Henry
VBA IsNumeric in Excel — warum es zu Dingen Ja sagt, die gar keine Zahlen sind

VBA IsNumeric in Excel — warum es zu Dingen Ja sagt, die gar keine Zahlen sind

IsNumeric fragt nicht, ob eine Zeichenkette eine Zahl ist — es fragt, ob VBA sie als Zahl parsen könnte, wenn es müsste, und VBA gibt sich alle Mühe. Diese Anleitung zeigt, warum IsNumeric bei wissenschaftlicher Notation, einem Hex-Literal, einem Tausendertrennzeichen, einer mit Leerzeichen aufgefüllten Zeichenkette und sogar einem nachgestellten Vorzeichen True liefert, warum das schlechte Daten durch Ihre Prüfung lässt, warum es gebietsschema-abhängig genug ist, um Daten zwischen Rechnern zu zerstören, und wann Sie ihm nicht mehr trauen und die Form stattdessen mit dem Like-Operator festnageln sollten.

Henry
VBA Like-Operator in Excel — Platzhalter-Abgleich und die Falle mit der ganzen Zeichenkette

VBA Like-Operator in Excel — Platzhalter-Abgleich und die Falle mit der ganzen Zeichenkette

Der VBA-Operator Like beantwortet genau eine Boolean-Frage — passt die ganze Zeichenkette auf diese Platzhalter-Form? Diese Anleitung behandelt die fünf Platzhalter (Sternchen, Fragezeichen, Raute sowie die Formen [Liste] und [!Liste]), warum Like die gesamte Zeichenkette prüft und Sie deshalb Sternchen um einen Teilstring brauchen, warum die Groß-/Kleinschreibung ein modulweiter Option-Compare-Schalter ohne Override pro Aufruf ist, wie Sie ein wörtliches Sternchen mit eckigen Klammern treffen, und wann Like sowohl InStr als auch einen vollen regulären Ausdruck schlägt.

Henry
VBA Regex in Excel — das RegExp-Objekt und warum Ihr Treffer leer zurückkommt

VBA Regex in Excel — das RegExp-Objekt und warum Ihr Treffer leer zurückkommt

Regex ist in VBA kein Schlüsselwort — es ist das VBScript-RegExp-Objekt, das Sie erzeugen, und es tut nichts Nützliches, bis Sie drei Schalter setzen und nach der richtigen Ausgabe greifen. Diese Anleitung behandelt späte Bindung gegenüber dem Hinzufügen des Verweises, warum Global standardmäßig False ist und Sie deshalb nur den ersten Treffer bekommen, den Unterschied zwischen Test, Replace und Execute, warum Extrahieren heißt, über Match.Value hinaus zu SubMatches zu greifen, und den VBScript-Musterdialekt mit seinen Dollar-Zeichen-Rückverweisen.

Henry
VBA Filter in Excel — ein Array in einem Aufruf eingrenzen, und warum es nicht AutoFilter ist

VBA Filter in Excel — ein Array in einem Aufruf eingrenzen, und warum es nicht AutoFilter ist

Die VBA-Funktion Filter nimmt ein eindimensionales String-Array und gibt ein neues, kleineres Array zurück, das nur die Elemente enthält, die einen von Ihnen genannten Teilstring enthalten — sie ist der Array-Vetter von InStr und rührt nie eine Zelle an. Diese Anleitung entwirrt die ständige Verwechslung mit AutoFilter (einer Arbeitsblattmethode, die Zeilen ausblendet) und behandelt dann die drei Fallen, die Filter kaputt aussehen lassen: Sie trifft Teilstrings statt ganzer Werte, sie beachtet standardmäßig die Groß-/Kleinschreibung, bis Sie vbTextCompare übergeben, und sie liefert ein nullbasiertes Array, dessen UBound minus eins ist, wenn nichts passt.

Henry
VBA Join in Excel — Array zurück zu einem String, die exakte Umkehrung von Split

VBA Join in Excel — Array zurück zu einem String, die exakte Umkehrung von Split

Die VBA-Funktion Join klebt ein eindimensionales Array wieder zu einem einzigen String zusammen und setzt zwischen jedes Element ein Trennzeichen — sie ist die exakte Umkehrung von Split und die einzeilige Kur für die Verkettungsschleife, die immer ein Trennzeichen am Ende hinterlässt. Diese Anleitung zeigt, warum Join nur ein 1-D-Array akzeptiert (sodass Range.Value fehlschlägt, bis Sie es flach machen), warum das Trennzeichen standardmäßig ein Leerzeichen ist statt nichts, wie jedes Element in Text umgewandelt wird, und die Split-Filter-Join-Pipeline, die eine fünfzehnzeilige Schleife durch einen Ausdruck ersetzt.

Henry
VBA Transpose in Excel — ein Array umformen und eine Spalte auf 1-D flach machen

VBA Transpose in Excel — ein Array umformen und eine Spalte auf 1-D flach machen

Application.Transpose vertauscht Zeilen und Spalten eines Arrays, doch seine eigentliche Alltagsaufgabe in VBA ist leiser: Das Transponieren eines einspaltigen Bereichs fasst ihn zu dem eindimensionalen Array zusammen, das Join und Filter beide brauchen. Diese Anleitung behandelt den Flatten-Trick, warum es Application.Transpose ist und nie ein nacktes Transpose, die stille 65.536-Elemente-Decke, die Sie bei großen Daten verrät, und die Fehler, die es bei Strings über 255 Zeichen oder Arrays mit einem Fehlerwert wirft — damit Sie genau wissen, wo das Umformen aufhört und eine echte Schleife beginnt.

Henry
VBA Pivot Table in Excel — erstellen, aktualisieren und warum sie alte Zahlen zeigt

VBA Pivot Table in Excel — erstellen, aktualisieren und warum sie alte Zahlen zeigt

Eine PivotTable in Excel VBA liest nicht Ihre Zellen, sondern einen PivotCache — eine eingefrorene Momentaufnahme der Quelldaten, die beim Erstellen der Pivot entsteht, und diese eine Tatsache erklärt die häufigste Pivot-Beschwerde: Sie ändern die Daten, und die Pivot zeigt weiter die Zahlen von gestern, bis Sie RefreshTable aufrufen. Diese Anleitung behandelt den modernen zweistufigen Aufbau mit PivotCaches.Create und CreatePivotTable, das Anordnen der Felder über die vier Orientation-Werte, das Hinzufügen von Datenfeldern mit der richtigen Zusammenfassungsfunktion, die Aktualisierungsfalle und die Quellbereichsfalle, die Sie lösen, indem Sie den Cache auf eine Table richten, damit die Pivot von allein mitwächst.

Henry
VBA Table (ListObject) in Excel — Zeilen hinzufügen und die Jagd nach der letzten Zeile beenden

VBA Table (ListObject) in Excel — Zeilen hinzufügen und die Jagd nach der letzten Zeile beenden

Eine Excel-Tabelle in VBA ist ein ListObject — ein Bereich, der seine eigene Kopfzeile, seinen Datenkörper und seine Ränder kennt und sich automatisch ausdehnt, wenn Sie hineinschreiben, und genau deshalb erledigt sie die häufigste Makro-Fron: die Jagd nach der letzten Zeile mit End(xlUp). Diese Anleitung behandelt das Umwandeln eines Bereichs mit ListObjects.Add, das Ansprechen der Teile über ihren Namen (HeaderRowRange, DataBodyRange, ListColumns), das zuverlässige Hinzufügen von Zeilen mit ListRows.Add, die DataBodyRange-ist-Nothing-Falle bei einer leeren Tabelle und das Schreiben von Formeln mit strukturierten Verweisen, die Einfügungen überstehen.

Henry
VBA Chart in Excel — ein Diagramm im Code erstellen und warum es die falschen Daten zeichnet

VBA Chart in Excel — ein Diagramm im Code erstellen und warum es die falschen Daten zeichnet

Ein Diagramm in Excel VBA hält keine Daten, sondern einen Verweis auf einen Range, denn jede Datenreihe speichert ihre Werte als Formel wie =Sheet1!$B$2:$B$13, und diese eine Tatsache erklärt, warum ein Diagramm still die falschen Zellen zeichnet, sobald sich seine Quelle bewegt. Diese Anleitung behandelt die Zwei-Container-Trennung, über die jedes Diagramm-Makro stolpert (eingebettete ChartObjects gegenüber Diagrammblättern), das Erstellen eines Diagramms und das Binden der Daten in einem Zug mit SetSourceData, das Hinzufügen von Datenreihen von Hand mit SeriesCollection.NewSeries, die Duplikat-Diagramm-Falle beim erneuten Lauf und das Binden der Quelle an eine Table, damit das Diagramm den Daten folgt statt einer eingefrorenen Adresse.

Henry
VBA Named Range in Excel — Names.Add, RefersTo und warum Ihre Referenz driftet

VBA Named Range in Excel — Names.Add, RefersTo und warum Ihre Referenz driftet

Ein Named Range in Excel VBA ist kein Spitzname für eine Zelle, sondern eine gespeicherte Formel, die Excel bei jeder Verwendung des Namens neu auflöst, und diese eine Tatsache erklärt jede Named-Range-Überraschung, auf die Sie je stoßen werden. Sie erklärt, warum RefersTo ein führendes Gleichheitszeichen braucht, warum die Dollarzeichen entscheiden, ob der Name absolut ist oder mit der aktiven Zelle driftet, warum ein Name einen Scope hat, der entweder die ganze Arbeitsmappe oder ein einzelnes Blatt umfasst, und warum das Löschen der Zellen unter einem Namen ihn auf einen dauerhaften #REF!-Fehler zeigen lässt. Diese Anleitung behandelt Names.Add und die einzeilige Range.Name-Abkürzung, den Scope über die Arbeitsmappe gegenüber dem Blatt, das Lesen des Werts, auf den ein Name verweist, und das Ausräumen der kaputten Namen, die eine Arbeitsmappe aufblähen.

Henry
VBA AutoFill in Excel — eine Serie oder Formel füllen ohne die Destination-Falle

VBA AutoFill in Excel — eine Serie oder Formel füllen ohne die Destination-Falle

AutoFill in Excel VBA ist eine Muster-Maschine, kein Kopierbefehl, und diese Unterscheidung festzuhalten ist genau das, was es davon abhält, Sie zu überraschen. Range.AutoFill nimmt einen kleinen Seed und dehnt ihn über eine größere Destination, wobei es eine Serie wie 1, 2, 3 oder die Monate des Jahres fortsetzt, statt bloß den Seed zu wiederholen, was zugleich der ganze Sinn und die ganze Falle ist. Diese Anleitung behandelt die Destination-Regel, die den run-time 1004 verursacht, den jeder trifft, den FillType, der entscheidet, ob Sie eine Serie oder eine Kopie bekommen, das Füllen einer Formel eine Spalte hinunter, sodass sich ihre Referenzen pro Zeile anpassen, und warum die einfacheren FillDown und FillRight meist das bessere Werkzeug sind, wenn Sie nur eine schlichte Kopie wollen.

Henry
VBA Clear in Excel — ClearContents vs Clear vs Delete und die Leerstring-Falle

VBA Clear in Excel — ClearContents vs Clear vs Delete und die Leerstring-Falle

Eine Zelle in Excel VBA zu leeren ist ein Menü, kein einzelner Befehl, und den falschen Eintrag zu wählen ist der Weg, wie Makros still eine Vorlage zerstören oder die Zellen verschieben, von denen andere Formeln abhängen. Eine Zelle ist ein Stapel aus Schichten, der Wert und die Formel, das Zahlenformat, Schrift und Füllung, Rahmen, Gültigkeitsprüfung und Kommentare, und jede Leer-Methode wischt eine gewählte Teilmenge, während der Rest überlebt. Diese Anleitung behandelt ClearContents gegenüber Clear gegenüber ClearFormats, warum eine Zelle auf einen leeren String zu setzen nicht dasselbe ist, wie sie leer zu machen, den entscheidenden Unterschied zwischen Clear und Delete, der jede Adresse darunter ändert, und wie man einen ganzen UsedRange in einem einzigen schnellen Aufruf leert.

Henry
VBA Cell Value in Excel — .Value lesen und schreiben und der Range-zu-Array-Trick

VBA Cell Value in Excel — .Value lesen und schreiben und der Range-zu-Array-Trick

Eine Zelle in Excel VBA zu lesen und zu schreiben läuft über die Range-Eigenschaft .Value, und das Wichtigste ist, was bei mehr als einer Zelle passiert: ein mehrzelliger Range liefert Ihnen ein 1-basiertes, zweidimensionales Variant-Array, und ein Array zurückzuschreiben setzt den ganzen Block in einem einzigen Aufruf. Genau das trennt ein Makro, das sofort fertig ist, von einem, das quält, denn jeder einzelne Cells(i, j).Value-Zugriff überquert die Grenze von VBA nach Excel. Diese Anleitung behandelt .Value auf einer einzelnen Zelle gegenüber einem Range, den Array-Roundtrip, der Massen-Lesen und -Schreiben schnell macht, warum das Array selbst für eine Spalte 2D ist, und die Standard-Eigenschaft-Abkürzung, auf die Sie sich nicht verlassen sollten.

Henry
VBA Formula in Excel — Formeln im Code schreiben mit .Formula und .FormulaR1C1

VBA Formula in Excel — Formeln im Code schreiben mit .Formula und .FormulaR1C1

Eine Formel aus Excel VBA zu schreiben bedeutet, der Range-Eigenschaft .Formula eine Zeichenkette zuzuweisen, und die eine Regel, die jeden erwischt, ist, dass .Formula einen einzigen festen Dialekt spricht: US-englische Funktionsnamen und Kommatrennzeichen, egal welche Sprache oder Regionseinstellungen der Nutzer hat. =SUM(A1:A10) zuzuweisen funktioniert auf jeder Maschine, und Excel lokalisiert die Anzeige; das deutsche =SUMME(A1;A10) zuzuweisen löst run-time error 1004 aus. Diese Anleitung behandelt .Formula gegenüber dem lokalisierten .FormulaLocal, .FormulaR1C1, um relative Formeln über einen ganzen Range zu stempeln, warum das führende Gleichheitszeichen Pflicht ist, wie man Anführungszeichen in einer Formel-Zeichenkette verdoppelt, und das Zurücklesen einer Formel mit .HasFormula.

Henry
VBA Value vs Value2 vs Text in Excel — welches liest die Zelle richtig

VBA Value vs Value2 vs Text in Excel — welches liest die Zelle richtig

Eine Zelle in Excel VBA hat mehr als ein Gesicht, und das falsche zu lesen ist ein stiller Bug: .Value2 gibt die rohe gespeicherte Zahl, .Value gibt diese Zahl in einen passenden VBA-Typ umgewandelt (eine als Datum formatierte Zelle liefert ein Date, eine Währungszelle ein Currency), und .Text gibt die formatierte Zeichenkette, die auf dem Bildschirm erscheint, schreibgeschützt. .Text zum Rechnen zu lesen gibt Ihnen eine Zeichenkette wie $1,235 oder sogar ### zurück, wenn die Spalte schmal ist; .Value auf einer Währungszelle kann eine große Zahl runden; .Value2 ist der schnelle, verlustfreie Standard. Diese Anleitung erklärt alle drei Lese-Gesichter, wann die Currency- und Date-Umwandlung Genauigkeit verliert, warum .Text nur zur Anzeige dient und nicht zugewiesen werden kann, und zu welchem Gesicht man greifen sollte.

Henry
VBA Shell in Excel — ein externes Programm starten, und warum Ihr Code nicht wartet

VBA Shell in Excel — ein externes Programm starten, und warum Ihr Code nicht wartet

Die VBA-Funktion Shell startet ein externes Programm und geht sofort weiter — sie ist fire-and-forget. Shell liefert eine Task-ID zurück, nicht den Exit-Code des Programms, seine Ausgabe oder ein Erfolgssignal, und die nächste Zeile Ihres Makros läuft bereits, während das Programm noch startet. Das ist der Bug hinter den meisten Shell-Fehlern: Sie starten mit Shell einen Konverter und versuchen dann, eine Datei zu öffnen, die er noch gar nicht geschrieben hat. Diese Anleitung erklärt, warum Shell nicht wartet, wie Sie Pfade mit Leerzeichen in Anführungszeichen setzen, warum Shell ausführbare Dateien startet, aber von sich aus kein PDF und keine URL öffnen kann, und wann Sie Shell zugunsten von WScript.Shell Run oder Exec fallen lassen, um tatsächlich auf das Programm warten und lesen zu können, was es erzeugt hat.

Henry
VBA Environ in Excel — Windows-Pfade lesen, ohne einen Benutzerordner fest zu verdrahten

VBA Environ in Excel — Windows-Pfade lesen, ohne einen Benutzerordner fest zu verdrahten

Die VBA-Funktion Environ liest die Umgebungsvariablen, die Windows jedem Programm mitgibt — USERPROFILE, TEMP, USERNAME, APPDATA —, sodass Sie benutzerspezifische Pfade bauen können, ohne C:\Users\John fest zu verdrahten, was auf jedem anderen Rechner bricht. Ihre kennzeichnende Falle ist lautlos: Eine fehlende oder falsch geschriebene Variable liefert eine leere Zeichenkette, keinen Fehler, also gibt Environ mit einem Tippfehler wie TMEP klammheimlich nichts zurück, und Ihr Pfad landet im Wurzelverzeichnis des Laufwerks. Diese Anleitung behandelt, warum Environ das Werkzeug für portable Pfade ist, warum Sie jedes Ergebnis als möglicherweise leer behandeln müssen, die zwei Aufrufformen (nach Name gegenüber nach numerischem Index), den Snapshot, den Environ beim Start von Excel nimmt, und was Environ nicht kann — Variablen setzen oder eine nach dem Start geänderte lesen.

Henry
VBA CreateObject in Excel — Late Binding, GetObject und warum Outlook offen bleibt

VBA CreateObject in Excel — Late Binding, GetObject und warum Outlook offen bleibt

CreateObject ist der Generalschlüssel von VBA zu allem außerhalb von Excel — es startet jede COM-Anwendung über ihre ProgID-Zeichenkette: Scripting.FileSystemObject, Scripting.Dictionary, Outlook.Application, WScript.Shell, Word.Application. Dieses Nachschlagen per Zeichenkette ist Late Binding: Der Compiler weiß nichts über das Objekt, also scheitert eine falsche ProgID oder eine nicht installierte Anwendung erst zur Laufzeit mit error 429. Diese Anleitung erklärt die eigentliche Entscheidung zwischen Late und Early Binding (Portabilität gegenüber IntelliSense), warum CreateObject immer eine neue Instanz startet, während GetObject sich an eine laufende hängt, und warum ein kopfloser Outlook- oder Excel-Prozess im Task-Manager hängen bleibt, wenn Sie vergessen, die Anwendung mit Quit zu beenden und das Objekt auf Nothing zu setzen.

Henry
VBA Now, Date & Time in Excel — die Uhr auslesen, und warum Date auch eine Anweisung ist

VBA Now, Date & Time in Excel — die Uhr auslesen, und warum Date auch eine Anweisung ist

Ein VBA-Datum ist ein Double — der Ganzzahlteil zählt die Tage seit dem 30.12.1899, der Nachkommateil ist die Uhrzeit, und so sind Now, Date und Time nur drei Blicke auf dieselbe Uhr. Now liefert Datum plus Uhrzeit, Date liefert heute um Mitternacht, Time nur die Uhrzeit. Der Bug, der die meisten Makros zerlegt, ist der Vergleich eines gespeicherten Now-Werts mit Date, der nie passt, weil Now einen Nachkommateil trägt, den das ganzzahlige Date nicht hat. Schlimmer noch, Date und Time sind auch Anweisungen, die die Systemuhr des Rechners neu stellen. Diese Anleitung zeigt, was der Double wirklich ist, warum der Gleichheitstest scheitert, wie Sie die Uhrzeit mit Int oder DateValue abschneiden, und warum Now Ortszeit ist statt UTC.

Henry
VBA DateAdd & DateDiff in Excel — Datumsrechnung ohne den Monatslängen-Bug

VBA DateAdd & DateDiff in Excel — Datumsrechnung ohne den Monatslängen-Bug

Weil ein VBA-Datum ein Double ist, rückt 1 zu addieren um einen Tag vor, und schlichte Arithmetik stimmt — für Tage. Sie bricht in dem Moment, in dem Sie einen Monat als 30 Tage oder ein Jahr als 365 behandeln, denn Monate und Schaltjahre haben keine feste Länge. DateAdd kennt den Kalender, also ergibt einen Monat zum 31. Januar addiert den 28. Februar statt eines unmöglichen 31. DateDiff zählt die überschrittenen Grenzen, nicht die verstrichene Zeit, weshalb die Lücke vom 31. Dezember zum 1. Januar ein Jahr ist, obwohl nur ein Tag verging. DateSerial baut ein Datum aus Jahr, Monat und Tag ohne regionale Mehrdeutigkeit und normalisiert Überlauf, was die saubere Letzter-Tag-des-Monats-Redewendung liefert. Diese Anleitung zeigt, wann schlichtes Plus genügt, welche Intervallcodes Leute stolpern lassen, und warum DateDiff eine Grenzzählung ist.

Henry
VBA Weekday & DatePart in Excel — Datumsteile herausziehen, und warum Montag nicht 1 ist

VBA Weekday & DatePart in Excel — Datumsteile herausziehen, und warum Montag nicht 1 ist

Year, Month, Day, Hour, Minute und Second ziehen je eine Ganzzahl aus einem Datum zurück — dem Double, in den Sie ohnehin schon hineinsehen können — und sie sind so einfach, wie sie aussehen. Weekday ist das, was beißt — es liefert 1 bis 7, aber die Nummerierung hängt von einem zweiten Argument ab, das standardmäßig Sonntag gleich 1 setzt, sodass in einem schlichten Aufruf Montag 2 ist, nicht 1, und jeder auf einer fest verdrahteten Zahl gebaute Wochenendtest still falsch ist. DatePart ist der allgemeine Extraktor mit denselben Intervallcodes wie DateAdd, und er erreicht Teile ohne eigene Funktion wie die Kalenderwoche und das Quartal, wobei seine Wochenregel standardmäßig nicht ISO 8601 ist. WeekdayName und MonthName liefern Namen in der Rechnersprache, gut für die Anzeige, aber nicht zum Zurücklesen. Diese Anleitung zeigt, wie Sie jeden Teil herausziehen und warum Montag nicht 1 ist.

Henry
VBA FreeFile & die Open-Anweisung in Excel — eine Dateinummer holen, eine Textdatei öffnen (keine Arbeitsmappe)

VBA FreeFile & die Open-Anweisung in Excel — eine Dateinummer holen, eine Textdatei öffnen (keine Arbeitsmappe)

In eingebautem VBA wird eine Textdatei über einen nummerierten Kanal erreicht — Sie schreiben Open path For Output As #n, und die Nummer n ist ein Handle, das Sie aus FreeFile nehmen müssen, statt es von Hand zu wählen. Hartcodieren Sie #1, und sobald zwei Dateien geöffnet sind, treffen Sie error 55 File already open; öffnen Sie eine Datei, die bereits Daten enthält, For Output, wird sie auf leer gekürzt; vergessen Sie Close, bleibt die Datei gesperrt, bis Excel beendet wird. Diese Anleitung zeigt, warum FreeFile Ihnen eine Kanalnummer gibt, die Sie in einer Variablen auffangen, den Unterschied zwischen For Output, For Append und For Input, warum die Open-Anweisung nicht Workbooks.Open ist, und das Aufräummuster, das den Kanal immer schließt.

Henry
VBA Print # vs Write # in Excel — eine Textdatei oder CSV schreiben (und warum Ihre voller Anführungszeichen ist)

VBA Print # vs Write # in Excel — eine Textdatei oder CSV schreiben (und warum Ihre voller Anführungszeichen ist)

Print # und Write # geben gegenteilige Antworten darauf, wie die Bytes auf der Festplatte aussehen sollen. Print # schreibt Text genau so, wie er erscheint — keine Anführungszeichen, keine Kommas, Sie bauen das Layout —, also ist es richtig für einen Bericht oder eine handgemachte CSV. Write # schreibt Maschinenformat — jede Zeichenfolge in Anführungszeichen gewickelt, Kommas zwischen den Werten, Datumsangaben in Rauten —, gedacht, um von Input # zurückgelesen zu werden, nicht von einem Menschen oder Excel. Diese Anleitung zeigt, warum Write # der Grund ist, dass Ihre CSV voller Anführungszeichen ist, warum ein Komma in einer Print #-Liste Druckzonen statt CSV-Kommas einfügt, wie For Output kürzt, während For Append anhängt, die Dezimalkomma-Locale-Falle, und warum das eingebaute Schreiben ANSI statt UTF-8 ist.

Henry
VBA Read Text File in Excel — Line Input vs Input #, und die EOF-Schleife, die keine Zeilen verliert

VBA Read Text File in Excel — Line Input vs Input #, und die EOF-Schleife, die keine Zeilen verliert

Eine Textdatei in VBA zu lesen hat drei Werkzeuge, und das falsche zu wählen bringt Ihre Daten durcheinander. Line Input # liest eine rohe Zeile in eine Zeichenfolge, und Sie zerlegen sie selbst, was vorhersehbar ist. Input # parst die abgegrenzten Felder direkt in Variablen — schnell für eine Datei, die Write # erzeugt hat, aber es verschluckt sich an nicht gequoteten Kommas und verirrten Anführungszeichen. Input(LOF(f), #f) schlürft die ganze Datei in eine Zeichenfolge. Diese Anleitung zeigt die EOF-Schleife, die jede Zeile genau einmal liest, warum Input # der Zwilling von Write # ist und Line Input # der Zwilling von Print #, wie man den Off-by-one vermeidet, der error 62 auslöst, und wann eine CSV besser als Arbeitsmappe geöffnet wird, als sie von Hand zu parsen.

Henry
VBA MkDir in Excel — einen Ordner erstellen und warum es keinen verschachtelten Pfad anlegen kann

VBA MkDir in Excel — einen Ordner erstellen und warum es keinen verschachtelten Pfad anlegen kann

Die VBA-Anweisung MkDir erstellt genau eine Ordnerebene, keinen ganzen Pfad — MkDir auf einen Pfad, dessen übergeordneter Ordner nicht existiert, löst error 76 aus, und MkDir auf einen bereits existierenden Ordner löst error 75 aus, statt einfach nichts zu tun. Die alltägliche Aufgabe diesen Ordner erstellen heißt also in Wahrheit jede fehlende Ebene erstellen, und nur dort, wo sie fehlt. Diese Anleitung zeigt, warum MkDir nur eine Ebene anlegt, warum FileSystemObject.CreateFolder ebenfalls nicht rekursiv arbeitet, die existenzgeprüfte Schleife, die einen vollständigen Pfad sicher aufbaut, und warum ein bloßer Ordnername unter CurDir statt in Ihrem Arbeitsmappenordner landet.

Henry
VBA RmDir in Excel — einen Ordner löschen, aber nur, wenn er leer ist

VBA RmDir in Excel — einen Ordner löschen, aber nur, wenn er leer ist

Die VBA-Anweisung RmDir löscht einen Ordner nur, wenn er vollständig leer ist — richten Sie sie auf einen Ordner, der noch Dateien oder Unterordner enthält, und sie löst error 75 aus, das genaue Spiegelbild von Kill, das jede Datei gnadenlos löscht. Diesen Ordner löschen heißt also in Wahrheit leere ihn zuerst, dann entferne ihn. Diese Anleitung zeigt, warum RmDir einen nicht leeren Ordner verweigert, warum es Ordner, aber niemals Dateien löscht, wie Sie einen Ordner mit Kill vor RmDir leeren und wann FileSystemObject.DeleteFolder einen ganzen Baum in einem Aufruf auslöscht — ohne Papierkorb und ohne Undo.

Henry
VBA CurDir & ChDir in Excel — warum ein relativer Pfad im falschen Ordner landet

VBA CurDir & ChDir in Excel — warum ein relativer Pfad im falschen Ordner landet

In VBA hat ein relativer Pfad keine Bedeutung, bis er gegen CurDir aufgelöst wird, das aktuelle Arbeitsverzeichnis — und in Excel ist dieses Verzeichnis eine wandernde Einstellung, die Sie nicht kontrollieren, nicht der Ordner, in dem Ihre Arbeitsmappe gespeichert ist. So können MkDir Reports oder Open data.csv bei jedem Lauf woanders landen, weil ein Datei-Öffnen-Dialog CurDir still verschiebt. Diese Anleitung zeigt, warum CurDir nicht ThisWorkbook.Path ist, warum ChDir das Laufwerk nicht ohne ChDrive wechseln kann und die eine Gewohnheit, die die ganze Klasse von Falscher-Ordner-Bugs beseitigt — verankern Sie jeden Pfad an ThisWorkbook.Path.

Henry
VBA Copy File in Excel — FileCopy, FileSystemObject.CopyFile und warum es keine geöffnete Arbeitsmappe kopieren kann

VBA Copy File in Excel — FileCopy, FileSystemObject.CopyFile und warum es keine geöffnete Arbeitsmappe kopieren kann

Eine Datei in VBA zu kopieren ist eine Zeile, aber welche Zeile hängt davon ab, ob die Datei geöffnet ist. FileCopy ist die eingebaute Anweisung ohne Verweise, und sie überschreibt das Ziel still, kann aber keine geöffnete Datei kopieren und wirft error 70 Permission denied genau bei der Arbeitsmappe, die Sie am dringendsten sichern wollen. Diese Anleitung zieht die Grenze zwischen drei Kopierwerkzeugen für drei Situationen — FileCopy für geschlossene Dateien auf der Festplatte, FileSystemObject.CopyFile für Platzhalter und ein explizites Überschreib-Flag und SaveCopyAs für die Arbeitsmappe, die gerade jetzt geöffnet ist — und zeigt, warum das Ziel ein vollständiger Pfad samt Dateiname sein muss, warum der Zielordner bereits existieren muss und wie Kopieren-dann-Löschen zu einem Verschieben wird.

Henry
VBA Delete File in Excel — Kill, FileSystemObject.DeleteFile und warum es kein Undo gibt

VBA Delete File in Excel — Kill, FileSystemObject.DeleteFile und warum es kein Undo gibt

Die VBA-Anweisung Kill löscht eine Datei endgültig — kein Papierkorb, keine Bestätigung, kein Undo. Diese eine Tatsache ist zugleich der ganze Sinn und die ganze Gefahr, und jede andere Regel zum Löschen von Dateien ist ein Weg, diese unumkehrbare Linie abzusichern. Diese Anleitung zeigt, warum Kill einen Fehler auslöst, statt nichts zu tun, wenn eine Datei fehlt oder geöffnet ist, wie ein Platzhalter wie Stern Punkt tmp jeden Treffer in einem Ordner auf einmal ohne Rückfrage löscht, warum Kill keinen Ordner entfernen kann und wie RmDir und DeleteFolder diese Aufgabe aufteilen, und wann FileSystemObject.DeleteFile mit seinem Force-Flag die sicherere Wahl für schreibgeschützte Dateien ist.

Henry
VBA Rename File in Excel — die Name-Anweisung, die auch Dateien verschiebt (und sich weigert zu überschreiben)

VBA Rename File in Excel — die Name-Anweisung, die auch Dateien verschiebt (und sich weigert zu überschreiben)

Die VBA-Anweisung Name benennt eine Datei um, ist aber in Wahrheit eine Umbenennen-und-Verschieben-Anweisung — richten Sie den neuen Pfad auf einen anderen Ordner, verschiebt VBA die Datei dorthin, statt sie an Ort und Stelle umzubenennen. Und anders als fast alles andere auf der Festplatte weigert sich Name zu überschreiben und löst error 58 aus, wenn das Ziel bereits existiert — das genaue Gegenteil von FileCopy, das still überschreibt. Diese Anleitung zeigt, warum Name ebenso verschiebt wie umbenennt, warum es keine Laufwerke wechseln kann und wie FileCopy plus Kill oder FileSystemObject.MoveFile diesen Fall behandelt, und warum Sie das Ziel absichern müssen, damit ein Fehler bei einer bestehenden Datei ein unbeaufsichtigtes Makro nicht anhält.

Henry
VBA Dir in Excel — Dateien in einem Ordner durchlaufen und der zustandsbehaftete Iterator, der Sie stolpern lässt

VBA Dir in Excel — Dateien in einem Ordner durchlaufen und der zustandsbehaftete Iterator, der Sie stolpern lässt

Dir sieht aus wie eine Funktion, verhält sich aber wie ein Iterator mit verstecktem Gedächtnis — Dir(path) liefert den ersten passenden Dateinamen, dann liefert Dir() ohne Argument den nächsten, bis eine leere Zeichenfolge kommt. Die eine Regel, die Sie rettet, lautet, rufen Sie Dir niemals erneut mitten in einer Dir-Schleife auf, denn ein zweites Dir startet eine neue Suche und setzt die erste zurück — die häufigste Ursache für übersprungene Dateien und Endlosschleifen. Lernen Sie, wie Sie jede .xlsx in einem Ordner durchlaufen, warum Dir nur den Namen und nicht den Pfad liefert, warum es nicht in Unterordner absteigen kann und wann Sie die Namen erst in ein Array sammeln, bevor Sie die Dateien anfassen.

Henry
VBA FileSystemObject in Excel — CreateObject gegenüber Verweis, Unterordner und warum es keine Arbeitsmappen öffnet

VBA FileSystemObject in Excel — CreateObject gegenüber Verweis, Unterordner und warum es keine Arbeitsmappen öffnet

Das FileSystemObject macht die Festplatte zu einem Objektmodell — Ordner und Dateien, die Sie mit For Each durchlaufen und aus denen Sie Eigenschaften lesen, statt Dirs einzelnem versteckten Cursor. Die eine Entscheidung, die Sie rettet, ist CreateObject(Scripting.FileSystemObject) gegenüber Dim fso As New FileSystemObject, denn späte Bindung braucht keinen Verweis und läuft auf jedem Rechner, während die früh gebundene Variante auf einem PC ohne angehaktes Microsoft Scripting Runtime nicht kompiliert. Lernen Sie, wann FSO Dir schlägt, wie Sie mit SubFolders in Unterordner absteigen, wie Sie Size und DateLastModified lesen und warum FSO Textdateien öffnet, aber niemals eine Excel-Arbeitsmappe.

Henry
VBA prüfen, ob eine Datei existiert — Dir gegenüber FileSystemObject.FileExists (und die Falle in einer Dir-Schleife)

VBA prüfen, ob eine Datei existiert — Dir gegenüber FileSystemObject.FileExists (und die Falle in einer Dir-Schleife)

Es gibt zwei richtige Wege, in VBA zu prüfen, ob eine Datei existiert, und einen falschen Reflex. Der Reflex ist, sie einfach zu öffnen und den Fehler abzufangen, was langsam ist und echte Fehlschläge verbirgt. Die richtigen Antworten sind Dir(path) (eine eingebaute Zeile) und fso.FileExists(path) (zustandslos und klarer) — und die Regel, die Sie rettet, lautet, verwenden Sie die Dir-Prüfung niemals in einer Dir-Schleife, denn Dir teilt sich einen versteckten Cursor, den der Existenztest still zurücksetzt. Lernen Sie, warum FileExists der sicherere Standard ist, wie Dir einen Ordnerpfad oder einen abschließenden Backslash falsch behandelt und warum Prüfen und dann Öffnen dennoch eine Fehlerabsicherung braucht.

Henry
VBA Arbeitsmappe öffnen in Excel — Workbooks.Open, den Rückgabewert abfangen und warum es nicht Workbook_Open ist

VBA Arbeitsmappe öffnen in Excel — Workbooks.Open, den Rückgabewert abfangen und warum es nicht Workbook_Open ist

Workbooks.Open ist eine Funktion, die die gerade geöffnete Arbeitsmappe zurückgibt — die eine Regel, die Sie rettet, lautet Set wb = Workbooks.Open(path), fangen Sie diesen Rückgabewert ab und arbeiten Sie über wb, nie über ActiveWorkbook, das sich in dem Moment ändert, in dem irgendetwas den Fokus stiehlt. Lernen Sie den Unterschied zwischen Workbooks.Open (eine Methode, die Sie aufrufen) und Workbook_Open (ein Ereignis, das automatisch läuft), wie Sie einen fehlenden Pfad absichern, sodass Sie eine Meldung statt Laufzeitfehler 1004 erhalten, wie Sie mit einer bereits geöffneten Datei umgehen und welche Parameter still einen Dialog aufwerfen und ein unbeaufsichtigtes Makro aufhängen.

Henry
VBA Arbeitsmappe speichern in Excel — Save vs. SaveAs, die FileFormat-Falle und warum Ihre Makros verschwinden

VBA Arbeitsmappe speichern in Excel — Save vs. SaveAs, die FileFormat-Falle und warum Ihre Makros verschwinden

Save überschreibt die Datei, die Sie bereits haben, an Ort und Stelle und ohne Dialog. SaveAs schreibt eine neue Datei oder einen neuen Typ, und die FileFormat-Nummer ist die Falle — speichern Sie eine Makro-Arbeitsmappe als xlOpenXMLWorkbook (51, das xlsx-Format), verwirft Excel still jede Zeile Ihres VBA; für xlsm brauchen Sie xlOpenXMLWorkbookMacroEnabled (52). Lernen Sie, wann Sie Save, SaveAs und SaveCopyAs verwenden, warum Save auf einer brandneuen Arbeitsmappe das Dialogfeld Speichern unter aufwirft und ein unbeaufsichtigtes Makro aufhängt, wie DisplayAlerts die Überschreib-Aufforderung in eine Vorabgenehmigung verwandelt und warum wb.Saved = True eine Mappe als sauber markiert, ohne irgendetwas zu schreiben.

Henry
VBA Arbeitsmappe schließen in Excel — SaveChanges, die Aufforderung, die Ihr Makro aufhängt, und Schließen ohne Speichern

VBA Arbeitsmappe schließen in Excel — SaveChanges, die Aufforderung, die Ihr Makro aufhängt, und Schließen ohne Speichern

wb.Close auf einer Arbeitsmappe mit ungespeicherten Änderungen wirft den modalen Dialog Möchten Sie die Änderungen speichern auf, und in einem unbeaufsichtigten Makro wartet dieser Dialog für immer. Sie beantworten ihn im Code mit dem SaveChanges-Argument — wb.Close SaveChanges:=False verwirft, SaveChanges:=True speichert zuerst, und lassen Sie es weg, bekommen Sie die Aufforderung. Lernen Sie, warum Schließen ohne das Argument der häufigste Grund ist, dass ein geplantes Makro nie fertig wird, warum die Objektvariable in dem Moment tot ist, in dem Sie schließen, wie sich Close von Application.Quit unterscheidet und warum das Schließen der letzten Arbeitsmappe ein unsichtbares EXCEL.EXE laufen lassen kann.

Henry
VBA Wait in Excel — Application.Wait, warum es Excel einfriert und wann Sie stattdessen Sleep nutzen

VBA Wait in Excel — Application.Wait, warum es Excel einfriert und wann Sie stattdessen Sleep nutzen

Application.Wait ist ein Wecker, keine Stoppuhr. Sie übergeben ihm einen Uhrzeit-Moment zum Aufwachen, keine Anzahl Sekunden zum Herunterzählen, weshalb Application.Wait 5 fast nichts tut und die korrekte Zeile Application.Wait Now + TimeValue("0:00:05") lautet. Es löst nur auf ganze Sekunden auf und friert Excel komplett ein, während es wartet, sodass es den Bildschirm nicht neu zeichnen, keine Statusleiste aktualisieren und den Benutzer nicht abbrechen lassen kann. Lernen Sie das Wecker-Modell, das Absolutzeit-Argument, über das jeder stolpert, warum Pausen unter einer Sekunde Sleep brauchen und warum eine Pause, bei der Excel am Leben bleiben muss, stattdessen eine DoEvents-Schleife ist.

Henry
VBA Sleep in Excel — der Windows-API-Aufruf, die 64-Bit-PtrSafe-Falle und Wait vs. Sleep

VBA Sleep in Excel — der Windows-API-Aufruf, die 64-Bit-PtrSafe-Falle und Wait vs. Sleep

Sleep ist kein VBA-Schlüsselwort. Es ist eine Windows-kernel32-Funktion, die Sie sich per Declare-Anweisung ausleihen, um Ihr Makro eine Anzahl von Millisekunden zu pausieren, weshalb es Ihnen die Genauigkeit unter einer Sekunde gibt, die Application.Wait nicht kann. Der Haken ist die Deklaration selbst. Alte, kopierte Declare-Sub-Sleep-Zeilen werfen auf 64-Bit-Excel einen Kompilierfehler, bis Sie das PtrSafe-Attribut in einer VBA7-Bedingungskompilierung ergänzen. Lernen Sie das Modell der geliehenen API, den genauen 64-Bit-Fix, warum Millisekunden nicht präzise sind und warum Sleep Excel dennoch einfriert, sodass eine reaktionsfähige Pause stattdessen eine DoEvents-Schleife ist.

Henry
VBA Timer in Excel — Messen, wie lange Ihr Makro braucht (und warum es kein Scheduler ist)

VBA Timer in Excel — Messen, wie lange Ihr Makro braucht (und warum es kein Scheduler ist)

Die VBA-Timer-Funktion ist eine Stoppuhr, kein Countdown-Timer. Trotz des Namens lässt sie nie etwas nach N Sekunden geschehen und pausiert Ihren Code nie. Sie gibt schlicht die Anzahl der seit Mitternacht verstrichenen Sekunden zurück, und Sie lesen sie zweimal, um zu messen, wie lange ein Codeblock gedauert hat. Damit ist sie das Werkzeug, das beweist, dass ScreenUpdating = False Ihr Makro wirklich schneller gemacht hat, statt zu raten. Lernen Sie das Stoppuhr-Modell, warum die Suche nach einem Timer meist Application.OnTime meint, den Mitternachts-Überlauf-Bug, der negative Laufzeiten erzeugt, und die Auflösung von einer Hundertstelsekunde.

Henry
VBA DoEvents in Excel — Verhindern, dass Excel nicht mehr reagiert (und warum es Ihr Makro zweimal laufen lässt)

VBA DoEvents in Excel — Verhindern, dass Excel nicht mehr reagiert (und warum es Ihr Makro zweimal laufen lässt)

DoEvents pausiert Ihr Makro für einen Augenblick und lässt Excel die Klicks, Tastenanschläge und Neuzeichnungen abarbeiten, die sich anstauten, während Ihr Code lief, und genau das verhindert, dass das Fenster grau wird und in den Zustand Keine Rückmeldung fällt, und macht eine funktionierende Abbrechen-Schaltfläche möglich. Doch dieselbe Abgabe der Kontrolle, die Excel am Leben hält, gibt sie mitten im Makro auch an den Benutzer zurück, sodass er dieselbe Schaltfläche erneut anklicken und eine zweite Kopie Ihres Makros innerhalb der ersten starten kann. Diese Re-Entrancy, nicht die Geschwindigkeit, ist die eigentliche Gefahr. Lernen Sie, wo Sie DoEvents platzieren, wie Sie sich mit einem Lauf-Flag gegen Re-Entrancy absichern, warum Sie es drosseln müssen und warum es kein Multithreading ist.

Henry
VBA StatusBar in Excel — Makrofortschritt ohne UserForm anzeigen (und die Nachricht, die für immer hängen bleibt)

VBA StatusBar in Excel — Makrofortschritt ohne UserForm anzeigen (und die Nachricht, die für immer hängen bleibt)

Application.StatusBar lässt Sie Ihren eigenen Text in die Leiste am unteren Rand des Excel-Fensters schreiben, was der leichteste Weg ist, den Fortschritt eines laufenden Makros ohne UserForm und ohne Flackern anzuzeigen. Die eine Zeile, die jeder vergisst, ist das Zurücksetzen. Welchen Text Sie zuletzt geschrieben haben, bleibt dort nach dem Ende des Makros angeheftet, weil Excel die Leiste erst zurücknimmt, wenn Sie Application.StatusBar gleich False setzen. Und sie aktualisiert sich in einer engen Schleife nicht sichtbar, sofern Excel keinen Moment zum Neuzeichnen bekommt, und genau hier kommt DoEvents ins Spiel. Lernen Sie das Schreib-und-Zurücksetz-Muster, warum False besser ist als ein leerer String, die Fortschritts-Prozent-Redewendung und wann eine echte Fortschrittsleiste die zusätzliche Arbeit wert ist.

Henry
VBA DisplayAlerts in Excel — Bestätigungsdialoge für unbeaufsichtigte Makros unterdrücken (und warum es die gefährlichen automatisch bestätigt)

VBA DisplayAlerts in Excel — Bestätigungsdialoge für unbeaufsichtigte Makros unterdrücken (und warum es die gefährlichen automatisch bestätigt)

Application.DisplayAlerts gleich False weist Excel an, seine Bestätigungs- und Warndialoge während des Makrolaufs nicht mehr anzuzeigen, sodass ein unbeaufsichtigtes Makro nicht wartend hängen bleibt, bis jemand auf OK klickt. Doch es bringt die Warnung nicht so sehr zum Schweigen, als dass es sie mit Excels Standardantwort für Sie beantwortet, und bei Aufforderungen wie dieses Blatt löschen oder diese Datei überschreiben lautet der Standard nur zu. Es setzt sich am Ende des Makros von selbst auf True zurück, weshalb die eigentliche Falle nicht ist, es für immer abgeschaltet zu lassen, sondern eine Warnung zu unterdrücken, die Sie geschützt hat. Lernen Sie, wo es hilft, die Regel des schmalen Fensters, warum es nicht dasselbe wie Fehlerbehandlung ist und wie es mit ScreenUpdating und Calculation zusammenspielt.

Henry
VBA ScreenUpdating in Excel — Flackern stoppen und Makros beschleunigen (und warum es ein langsames Makro nicht rettet)

VBA ScreenUpdating in Excel — Flackern stoppen und Makros beschleunigen (und warum es ein langsames Makro nicht rettet)

Application.ScreenUpdating gleich False weist Excel an, den Bildschirm während des Makrolaufs nicht mehr neu zu zeichnen und ihn erst am Ende einmal neu aufzubauen, was das Flackern beseitigt und einen moderaten Geschwindigkeitsgewinn bringt. Doch es hilft nur, wenn Ihr Code schreibt, auswählt oder scrollt — schrauben Sie es an ein rechenlastiges Makro, gewinnen Sie nichts. Die Regel, die Sie rettet, lautet, dass ein Absturz den Bildschirm eingefroren und grau zurücklassen kann, weshalb Sie ihn in einem Fehlerhandler wiederherstellen und sich nie darauf verlassen, dass er sich selbst zurücksetzt. Lernen Sie, wo es hilft, wo nicht, die Flacker-Falle der verschachtelten Wiederherstellung und das CleanExit-Muster, das es mit Calculation und EnableEvents kombiniert.

Henry
VBA Calculation in Excel — Calculation für Geschwindigkeit auf Manual setzen (und die stille Falle, es dort zu lassen)

VBA Calculation in Excel — Calculation für Geschwindigkeit auf Manual setzen (und die stille Falle, es dort zu lassen)

Application.Calculation gleich xlCalculationManual weist Excel an, nach jedem Schreibvorgang nicht mehr neu zu berechnen und die Neuberechnung auf einen Durchgang zu verschieben, was der eigentliche Geschwindigkeitsgewinn bei formellastigen Arbeitsmappen ist. Doch es ist der gefährlichste Schalter in VBA, weil sein Versagen still ist — lassen Sie es auf Manual, hören Formeln ohne sichtbaren Hinweis auf zu aktualisieren, sodass Summen veralten und es niemand bemerkt. Die Regel, die Sie rettet, lautet, den Berechnungszustand zu sichern, mit Application.Calculate eine Neuberechnung zu erzwingen, wenn ein späterer Schritt ein Ergebnis braucht, und den gesicherten Zustand in einem Fehlerhandler wiederherzustellen, statt Automatic fest zu verdrahten. Lernen Sie die Fallstricke des manuellen Modus, den error 1004 bei keiner offenen Arbeitsmappe und das CleanExit-Muster.

Henry
VBA EnableEvents in Excel — Verhindern, dass Ihr Makro seine eigenen Ereignisse auslöst (und warum ein Absturz sie tot zurücklässt)

VBA EnableEvents in Excel — Verhindern, dass Ihr Makro seine eigenen Ereignisse auslöst (und warum ein Absturz sie tot zurücklässt)

Application.EnableEvents gleich False hindert die Schreibvorgänge Ihres Makros daran, Ereignishandler wie Worksheet_Change auszulösen, und genau das durchbricht die Endlosschleife, in der ein Handler eine Zelle bearbeitet und sich selbst erneut feuert. Es ist ein Schalter für Korrektheit, kein Geschwindigkeitsschalter. Die Regel, die Sie rettet, lautet, dass EnableEvents eine anwendungsweite Eigenschaft ist, die sich nicht von selbst zurücksetzt, sodass ein Absturz mit False jedes Ereignis über jede offene Arbeitsmappe hinweg tot zurücklässt, bis Excel neu startet — weshalb Benutzer berichten, dass ihre Schaltflächen aufgehört haben zu funktionieren. Lernen Sie die Lösung für das rekursive Worksheet_Change, die CleanExit-Wiederherstellung und warum dieser Schalter noch mehr zählt als die anderen.

Henry
VBA SpecialCells in Excel — Leere Zellen, sichtbare Zellen und Konstanten auswählen (und warum es einen Fehler wirft, wenn es nichts findet)

VBA SpecialCells in Excel — Leere Zellen, sichtbare Zellen und Konstanten auswählen (und warum es einen Fehler wirft, wenn es nichts findet)

SpecialCells lässt Excel die Zellen nach Typ auswählen statt nach Adresse — alle leeren Zellen, alle sichtbaren Zeilen, alle Formeln, alle Konstanten. Es ist der Code-Zwilling der Funktion Inhalte auswählen. Die eine Regel, die Sie rettet, lautet, dass SpecialCells den error 1004 wirft, wenn es gar nichts findet, sodass ein ungeschützter Aufruf eine Zeitbombe ist; die reife Form ist immer On Error Resume Next plus If Not result Is Nothing. Lernen Sie die wichtigen Zelltypen, die Muster zum Leerfüllen und zum Kopieren sichtbarer Zeilen und warum das Ergebnis ein Bezug aus mehreren Bereichen ist.

Henry
VBA Union in Excel — Nicht benachbarte Bereiche zu einem Bezug verbinden (und warum es keine Duplikate entfernt)

VBA Union in Excel — Nicht benachbarte Bereiche zu einem Bezug verbinden (und warum es keine Duplikate entfernt)

Union verbindet verstreute Rechtecke zu einem einzigen Bezug, sodass Sie mehrere nicht benachbarte Blöcke in einer Operation einfärben, leeren oder kopieren können — die Code-Fassung davon, mehrere Bereiche mit gedrückter Strg-Taste anzuklicken. Die Regel, über die jeder stolpert, lautet, dass Union aneinanderfügt und keine Duplikate entfernt; überlappende Zellen werden doppelt gezählt, also lügt .Count und Union ist eine Stapelliste, keine mathematische Vereinigung. Lernen Sie das Sammelmuster, das den Union-of-Nothing-Fehler vermeidet, warum es eine Operation pro Bezug statt einer Schleife pro Zelle ist und wie sich Union von Intersect unterscheidet.

Henry
VBA Intersect in Excel — Finden, wo sich zwei Bereiche überschneiden (und der Worksheet_Change-Schutz, den jeder nutzt)

VBA Intersect in Excel — Finden, wo sich zwei Bereiche überschneiden (und der Worksheet_Change-Schutz, den jeder nutzt)

Intersect gibt nur die Zellen zurück, die sich zwei Bereiche teilen, und gibt Nothing zurück, wenn sie sich nicht berühren — und dieses Nothing ist der ganze Sinn. Sein wichtigster Einsatz ist der Worksheet_Change-Schutz, If Not Intersect(Target, Range) Is Nothing, der verhindert, dass ein Ereignis bei jeder Bearbeitung auf dem Blatt feuert. Die Regel, die Sie rettet, lautet, dass keine Überschneidung Nothing zurückgibt, sodass jeder Zugriff auf eine Eigenschaft ohne Is-Nothing-Prüfung mit error 91 abstürzt. Lernen Sie den vollständigen Ereignisschutz mit EnableEvents, wie Sie ein Makro auf einen Zielbereich beschränken und wie sich Intersect von Union unterscheidet.

Henry
VBA Cells gegen Range in Excel — Zellen per Zahl ansprechen (und warum Cells(1, 2) B1 ist, nicht A2)

VBA Cells gegen Range in Excel — Zellen per Zahl ansprechen (und warum Cells(1, 2) B1 ist, nicht A2)

Cells ist Range per Zahl adressiert. Range(A1) zeigt auf eine Zelle mit einem String in der Lesereihenfolge, erst Spaltenbuchstabe dann Zeile; Cells(Zeile, Spalte) zeigt mit zwei Ganzzahlen in Excels Speicherreihenfolge, erst Zeile nach unten dann Spalte quer. Darum ist Cells(1, 2) gleich B1, nicht A2 — und darum ist Cells, dessen Koordinaten Sie berechnen können, der Bezug für Schleifen. Lernen Sie, wann Sie Cells statt Range nehmen, wie Sie mit Range(Cells, Cells) einen Block aus berechneten Ecken bauen, warum ein blankes Cells das ganze Blatt meint und warum Sie Cells mit einem Arbeitsblatt qualifizieren sollten.

Henry
VBA Resize in Excel — Einen Bereich vom Anker aus umformen (und warum es eine Anzahl ist, kein Delta)

VBA Resize in Excel — Einen Bereich vom Anker aus umformen (und warum es eine Anzahl ist, kein Delta)

Resize hält den oberen linken Anker eines Bereichs fest und zeichnet das Rechteck auf eine neue Größe neu. Es bewegt den Bezug nicht so wie Offset, und es wählt nichts aus — es gibt einen neuen Bereich zurück, der an derselben Ecke beginnt. Die Regel, über die alle stolpern, ist, dass Resize(rows, columns) eine absolute, 1-basierte Anzahl der Endgröße ist, kein hinzuzufügendes Delta, sodass Range(A1).Resize(5, 3) gleich A1:C5 ist und Resize(0) den Fehler 1004 auslöst. Lernen Sie, wie Sie ein Argument weglassen, um eine Dimension unverändert zu lassen, warum der Anker immer oben links ist und die beiden Muster, die sich lohnen — eine Kopfzeile mit Offset plus Resize entfernen und ein Array in einen passenden Block schreiben.

Henry
VBA CurrentRegion in Excel — Den ganzen Datenblock in einer Zeile greifen (und was eine leere Zeile damit macht)

VBA CurrentRegion in Excel — Den ganzen Datenblock in einer Zeile greifen (und was eine leere Zeile damit macht)

CurrentRegion ist der zusammenhängende Zellblock um eine Zelle. Excel beginnt bei Ihrer Zelle und dehnt sich nach außen aus, bis es auf eine ganz leere Zeile und eine ganz leere Spalte trifft, und gibt das kleinste Rechteck zurück, das diese ununterbrochene Insel umschließt — genau das, was Strg+Umschalt+Stern auswählt. Sie berechnen die Ränder nicht; Excel findet sie. Die Falle ist, dass eine einzelne ganz leere Zeile oder Spalte eine Wand ist, die den Block stillschweigend teilt, sodass Sie ohne Fehler die Hälfte Ihrer Daten bekommen. Lernen Sie, warum CurrentRegion die Kopfzeile einschließt und wie Sie sie mit Offset und Resize entfernen, wie es sich von UsedRange und von End(xlUp) unterscheidet und wann Sie stattdessen eine echte Tabelle nehmen.

Henry
VBA Borders in Excel — Zellrahmen im Code zeichnen (und warum der ganze Block eingerahmt wurde)

VBA Borders in Excel — Zellrahmen im Code zeichnen (und warum der ganze Block eingerahmt wurde)

Ein Rahmen ist in Excel VBA eine Eigenschaft einer Kante, kein Schalter an der Zelle. Ein Bereich hat acht adressierbare Rahmen — vier Außenkanten, zwei Sätze innerer Gitternetzlinien und zwei Diagonalen —, und die bloße Range.Borders-Auflistung meint alle auf einmal. Darum rahmt Range.Borders.LineStyle = xlContinuous jede einzelne Zelle ein, statt eine Kontur zu zeichnen. Lernen Sie, wann Sie BorderAround nur für den Rahmen nehmen, wie LineStyle, Weight und Color zusammenspielen, wie Sie eine Kante mit xlEdgeBottom setzen und wie Sie Rahmen mit xlLineStyleNone entfernen.

Henry
VBA Merge Cells in Excel — Zellen im Code verbinden und trennen (und warum Sie es meist lassen sollten)

VBA Merge Cells in Excel — Zellen im Code verbinden und trennen (und warum Sie es meist lassen sollten)

Zellen in Excel VBA zu verbinden ist keine Formatierung — es ist eine strukturelle Änderung am Raster. Range(A1:C1).Merge verschmilzt drei Zellen zu einer, die drei Spalten überspannt, und nur der Wert oben links überlebt, während die anderen gelöscht werden. Darum brechen verbundene Zellen still das Sortieren, Range-Rechnungen, Spalteneinfügungen und Schleifen. Lernen Sie Merge, UnMerge, MergeCells und MergeArea, warum Profis stattdessen zu Center Across Selection greifen und wie Sie verbundene Zellen im Code sicher finden und aufräumen.

Henry
VBA Column Width & Row Height in Excel — Größe ändern und AutoFit im Code (und die Einheiten, die Sie stolpern lassen)

VBA Column Width & Row Height in Excel — Größe ändern und AutoFit im Code (und die Einheiten, die Sie stolpern lassen)

Zellen in Excel VBA zu dimensionieren wirkt auf die ganze Spalte oder Zeile, und die zwei Dimensionen nutzen unterschiedliche Einheiten — ColumnWidth wird in Zeichen der Normal-Schrift gemessen, RowHeight in Punkt. Diese Diskrepanz ist der Grund, warum eine Breite von 10 und eine Höhe von 10 nichts miteinander gemein haben. AutoFit ist die andere Falle. Es läuft nur auf einer ganzen Spalte oder Zeile und misst den angezeigten Text, also übergeht es verbundene Zellen still. Lernen Sie ColumnWidth gegenüber dem schreibgeschützten Width, RowHeight und Textumbruch, EntireColumn.AutoFit und warum die Breite auf null zu setzen der falsche Weg ist, eine Spalte auszublenden.

Henry
VBA Font in Excel — Farbe, Fett und Größe im Code setzen (und die ColorIndex-Falle)

VBA Font in Excel — Farbe, Fett und Größe im Code setzen (und die ColorIndex-Falle)

Das Font-Objekt ist die Textebene einer Zelle in Excel VBA — Farbe, Fett, Kursiv, Größe und Name, und nichts davon berührt den Wert darunter. Der Haken ist die Farbe. Es gibt drei Wege, sie zu setzen, und sie nutzen unterschiedliche Zahlenräume. Range.Font.Color nimmt eine 24-Bit-RGB-Zahl, Range.Font.ColorIndex nimmt einen Paletten-Index von 1 bis 56, und die beiden sind nicht austauschbar. Lernen Sie, welchen Sie nehmen, wie Sie mit Characters einen Teil einer Zelle fetten oder umdimensionieren, warum wertbasiertes Färben zur bedingten Formatierung gehört und wie Sie eine Schriftfarbe zurücklesen, ohne die falsche Zahl zu bekommen.

Henry
VBA Zellfarbe in Excel — die Hintergrundfüllung im Code setzen (und warum Farbe keine Daten ist)

VBA Zellfarbe in Excel — die Hintergrundfüllung im Code setzen (und warum Farbe keine Daten ist)

Range.Interior ist die Füllebene einer Zelle in Excel VBA — die Farbe hinter dem Text. Setzen Sie sie mit Interior.Color und RGB, löschen Sie sie mit Interior.ColorIndex gleich xlNone, und wissen Sie, dass eine weiße Füllung nicht dasselbe ist wie keine Füllung. Der tiefere Punkt ist, dass eine gefärbte Zelle keine Daten trägt. SUM und SUMIF ignorieren sie, wenn Sie also Farbe zum Kategorisieren nutzen, verstecken Sie Informationen dort, wo Formeln sie nicht lesen können. Lernen Sie die Farb-Eigenschaften, wie Sie nach Bedingung hervorheben ohne eine Schleife, die veraltet, und wie Sie viele Bereiche schnell füllen.

Henry
VBA NumberFormat in Excel — die Anzeige einer Zahl ändern, ohne ihren Wert zu ändern

VBA NumberFormat in Excel — die Anzeige einer Zahl ändern, ohne ihren Wert zu ändern

Range.NumberFormat ist die Anzeigeebene einer Zelle in Excel VBA. Es ändert, wie eine gespeicherte Zahl auf dem Bildschirm gelesen wird, und ändert nie die Zahl selbst, eine Zelle so zu formatieren, dass sie 5 zeigt, während sie 5.4999 hält, ist also kein Runden, und die Summe nutzt weiterhin 5.4999. Hier beißt Aussehen gegenüber Wert wirklich, denn ein Datum ist in Wahrheit eine Seriennummer im Kostüm. Lernen Sie die Sprache der Formatcodes, wie sich NumberFormat von der Format-Funktion unterscheidet, die Gebietsschema-Falle mit NumberFormatLocal, und wann Sie stattdessen Round brauchen.

Henry
VBA WorksheetFunction in Excel — Excels eigene Funktionen aus Code aufrufen (und die zwei Arten, wie sie fehlschlagen)

VBA WorksheetFunction in Excel — Excels eigene Funktionen aus Code aufrufen (und die zwei Arten, wie sie fehlschlagen)

Mit Application.WorksheetFunction leiht sich VBA Excels über 450 eingebaute Funktionen, statt SUM, VLOOKUP oder COUNTIF als Schleife nachzubauen. Der Haken ist, dass es zwei Arten gibt, sie aufzurufen, und beide unterschiedlich fehlschlagen. WorksheetFunction.X löst einen Laufzeitfehler aus, wenn es keinen Treffer gibt, während Application.X einen Fehlerwert zurückgibt, den Sie mit IsError prüfen. Lernen Sie, welchen Aufrufstil Sie nehmen, warum das Ergebnis ein Variant sein muss, welche Funktionen Sie so nicht aufrufen sollten und wann Sie einen ganzen Bereich übergeben, statt Zelle für Zelle zu schleifen.

Henry
VBA Remove Duplicates in Excel — Duplikate in einer Zeile entfernen (und warum es ohne Rückgängig löscht)

VBA Remove Duplicates in Excel — Duplikate in einer Zeile entfernen (und warum es ohne Rückgängig löscht)

Range.RemoveDuplicates ist Excels Schaltfläche Duplikate entfernen in einer einzigen Codezeile, doch es ist zerstörerisch auf eine Art, wie es eine Schleife nicht ist. Es löscht Zeilen an Ort und Stelle, behält das erste Vorkommen und lässt sich nach einem Makrolauf nicht rückgängig machen. Das Argument, über das jeder stolpert, ist Columns, dessen Zahlen Versätze innerhalb des Bereichs sind, nicht Spaltenbuchstaben des Blatts. Lernen Sie die Falle der Bereichsversätze, warum Header xlYes wichtig ist, wie Sie die letzte statt der ersten Zeile behalten und wann Sie stattdessen zu Advanced Filter oder einem Dictionary greifen.

Henry
VBA Advanced Filter in Excel — Eindeutige Werte extrahieren und in einen neuen Bereich filtern (ohne Schleife)

VBA Advanced Filter in Excel — Eindeutige Werte extrahieren und in einen neuen Bereich filtern (ohne Schleife)

Range.AdvancedFilter ist der einzige Filter, der Daten ausgibt statt einer Ansicht. Er kann eine eindeutige Liste oder eine per Kriterien gefilterte Zeilenmenge in einem einzigen Aufruf an einen anderen Ort holen, ohne Schleife und ohne etwas zu löschen. Der Teil, der fremd wirkt, ist, dass seine WHERE-Klausel in Zellen lebt, ein Kriterienbereich, dessen Kopfzeile exakt zu den Daten passen muss. Lernen Sie xlFilterInPlace gegenüber xlFilterCopy, wie der Kriterienbereich funktioniert, wie Unique True zerstörungsfrei dedupliziert, die Kopfzeilen-Falle, die leere Ausgabe liefert, und wie es sich von AutoFilter und Remove Duplicates unterscheidet.

Henry
VBA Find in Excel — Zellen richtig durchsuchen (es liefert einen Range zurück, keine Position)

VBA Find in Excel — Zellen richtig durchsuchen (es liefert einen Range zurück, keine Position)

Die VBA-Methode Range.Find ist das Ctrl+F von Excel für Code, und sie bringt Menschen aus dem Tritt, weil sie ein Range-Objekt zurückgibt (oder Nothing, wenn es keinen Treffer gibt) statt einer Zahl. Lernen Sie die eine Prüfung, die den Absturz mit Fehler 91 verhindert, die Falle der klebrigen Argumente, die Find bei jedem Lauf anders reagieren lässt, wie LookAt xlWhole gegenüber xlPart über ganze Zelle gegenüber enthält entscheidet, und wie Sie mit FindNext schleifen, um jeden Treffer ohne Endlosschleife zu erreichen.

Henry
VBA AutoFilter in Excel — Zeilen im Code filtern (und warum ausgeblendet nicht gelöscht ist)

VBA AutoFilter in Excel — Zeilen im Code filtern (und warum ausgeblendet nicht gelöscht ist)

Die VBA-Methode AutoFilter filtert eine Tabelle im Code, doch die Zeilen, die sie ausblendet, sind weiterhin da — sie zählen weiterhin in SUM, werden weiterhin kopiert und sitzen weiterhin in Ihrem Bereich. Lernen Sie das mentale Modell, das die klassischen Bugs verhindert, warum Sie über SpecialCells xlCellTypeVisible gehen müssen, um nur sichtbare Zeilen anzufassen, wie Kriterien und Operatoren funktionieren, die Umschaltfalle, die Ihren Filter beim zweiten Lauf abschaltet, und das schnelle Muster aus Filtern-dann-Löschen für das Entfernen vieler Zeilen.

Henry
VBA Sort in Excel — Range.Sort gegenüber dem Sort-Objekt (und wie Sie die ursprüngliche Reihenfolge zurückbekommen)

VBA Sort in Excel — Range.Sort gegenüber dem Sort-Objekt (und wie Sie die ursprüngliche Reihenfolge zurückbekommen)

Sortieren in VBA ist ein dauerhaftes Umordnen ohne Ctrl+Z, daher lautet die erste Regel, die ursprüngliche Reihenfolge zu schützen, bevor Sie sie anfassen. Lernen Sie das mentale Modell, das eine Ansicht von einer Veränderung trennt, warum Header xlYes wichtig ist oder Ihre Titel in den Daten landen, den Unterschied zwischen dem schnellen Range.Sort und dem unbegrenzten Sort-Objekt, die SortFields.Clear-Falle, die alte Sortierschlüssel erbt, und warum als Text gespeicherte Zahlen in falscher Reihenfolge sortieren.

Henry
VBA Zeilen löschen in Excel — Zeilen, Leerzeilen und Zeilen nach Bedingung löschen (rückwärts schleifen!)

VBA Zeilen löschen in Excel — Zeilen, Leerzeilen und Zeilen nach Bedingung löschen (rückwärts schleifen!)

Eine Zeile in VBA zu löschen ist eine strukturelle Bearbeitung und kein Leeren — jede Zeile darunter rutscht nach oben und füllt die Lücke, weshalb eine vorwärts laufende Schleife Zeilen überspringt. Lernen Sie die eine Regel, die das behebt (von unten nach oben schleifen oder in einem einzigen Union löschen), wie sich EntireRow.Delete vom Leeren einer Zelle unterscheidet, den schnellen Weg zum Entfernen von Leerzeilen und wie Sie Zeilen nach Bedingung löschen, ohne Ihre Daten oder Verweisformeln zu beschädigen.

Henry
VBA Zeilen und Spalten einfügen in Excel — das Raster richtig verschieben (und in einer Schleife einfügen ohne Chaos)

VBA Zeilen und Spalten einfügen in Excel — das Raster richtig verschieben (und in einer Schleife einfügen ohne Chaos)

Einfügen ist der Spiegel des Löschens — es schiebt bestehende Zeilen nach unten (oder Spalten nach rechts), um Platz zu schaffen, weshalb dieselbe Verschiebung, die eine Löschschleife bricht, auch eine Einfügeschleife bricht. Lernen Sie EntireRow.Insert gegenüber einem Teilbereich mit dem Shift-Argument, warum CopyOrigin entscheidet, wessen Nachbarformatierung die neue Zeile erbt, die sichere Richtung zum Einfügen in einer Schleife und den Ein-Aufruf-Weg, viele Zeilen auf einmal hinzuzufügen.

Henry
VBA Spalten und Zeilen ausblenden in Excel — ausgeblendet ist nicht gelöscht (und warum Ihre Summen sich nicht ändern)

VBA Spalten und Zeilen ausblenden in Excel — ausgeblendet ist nicht gelöscht (und warum Ihre Summen sich nicht ändern)

Eine Spalte in VBA auszublenden ist kein Löschen und kein Filtern — die Daten sind weiterhin da, weiterhin in jeder SUM, werden beim Bereichskopieren weiterhin mitkopiert, nur mit null Anzeigebreite. Lernen Sie, warum .Hidden zu EntireColumn und EntireRow gehört, warum ausgeblendete Zellen weiterhin in Formeln zählen, die Alles-einblenden-Zeile, die ein festgefahrenes Blatt rettet, und wie sich manuell ausgeblendete Zeilen von per AutoFilter ausgeblendeten Zeilen unterscheiden, wenn Sie schleifen.

Henry
VBA Worksheet_BeforeDoubleClick in Excel — einen Doppelklick in eine Aktion verwandeln (und den Bearbeitungsmodus unterdrücken)

VBA Worksheet_BeforeDoubleClick in Excel — einen Doppelklick in eine Aktion verwandeln (und den Bearbeitungsmodus unterdrücken)

Worksheet_BeforeDoubleClick ist das Ereignis, das Excel in dem Augenblick auslöst, in dem Sie eine Zelle doppelklicken — bevor sie in den Bearbeitungsmodus wechselt — und reicht Ihnen die Zelle als Target plus ein Cancel-Flag. Setzen Sie Cancel auf True, um den Bearbeitungsmodus zu unterdrücken und stattdessen Ihre eigene Aktion auszuführen — ein Häkchen umschalten, eine Zeile als erledigt markieren oder zum Detail springen. Lernen Sie, wie Sie es mit Intersect auf eine einzige Spalte eingrenzen, warum ein vergessenes Cancel die Zelle in den Bearbeitungsmodus fallen lässt und wo der Code liegen muss.

Henry
VBA Worksheet_BeforeRightClick in Excel — das Rechtsklick-Menü ersetzen (und warum es zu deaktivieren keine Sicherheit ist)

VBA Worksheet_BeforeRightClick in Excel — das Rechtsklick-Menü ersetzen (und warum es zu deaktivieren keine Sicherheit ist)

Worksheet_BeforeRightClick ist das Ereignis, das Excel in dem Augenblick auslöst, in dem Sie eine Zelle mit der rechten Maustaste anklicken, bevor das Kontextmenü erscheint, und reicht Ihnen die Zelle als Target plus ein Cancel-Flag. Setzen Sie Cancel auf True, um das eingebaute Menü zu unterdrücken und stattdessen Ihre eigene Aktion auszuführen oder ein eigenes Menü zu zeigen. Lernen Sie, wie Sie es mit Intersect eingrenzen, damit Sie Kopieren und Einfügen nicht lahmlegen, warum das Deaktivieren des Rechtsklicks eher UX als Schutz ist und wo der Code liegen muss.

Henry
VBA Workbook_BeforePrint in Excel — einen Druck blockieren, eine Kopfzeile stempeln und die Druckvorschau-Falle

VBA Workbook_BeforePrint in Excel — einen Druck blockieren, eine Kopfzeile stempeln und die Druckvorschau-Falle

Workbook_BeforePrint ist das Ereignis, das Excel auslöst, bevor irgendetwas in der Arbeitsmappe gedruckt wird, und reicht Ihnen ein Cancel-Flag. Setzen Sie Cancel auf True, und der Druck wird blockiert — prüfen Sie vor dem Drucken oder halten Sie einen Entwurf zurück. Lernen Sie, warum das Ereignis auch bei der Druckvorschau feuert, sodass aufwendige Arbeit die Vorschau ausbremst, warum es einmal für die gesamte Arbeitsmappe statt je Blatt läuft, warum ein stiller Cancel ein Bug ist und wo der Code liegen muss.

Henry
VBA Workbook_BeforeClose in Excel — das Schließen abbrechen, zum Speichern auffordern und wo der Code liegen muss

VBA Workbook_BeforeClose in Excel — das Schließen abbrechen, zum Speichern auffordern und wo der Code liegen muss

Workbook_BeforeClose ist das Ereignis, das Excel in dem Moment auslöst, in dem jemand die Datei zu schließen versucht — bevor irgendetwas abgebaut wird — und reicht Ihnen ein Cancel-Flag. Setzen Sie Cancel auf True, und das Schließen wird abgeblasen. Lernen Sie, wie Sie beim Schließen aufräumen, wie Sie Excel mit der Saved-Eigenschaft davon abhalten, zweimal nach dem Speichern zu fragen, warum es bei einem Absturz nie feuert und wo der Code liegen muss.

Henry
VBA Workbook_BeforeSave in Excel — ein Speichern prüfen oder blockieren, und was SaveAsUI Ihnen wirklich verrät

VBA Workbook_BeforeSave in Excel — ein Speichern prüfen oder blockieren, und was SaveAsUI Ihnen wirklich verrät

Workbook_BeforeSave ist das Ereignis, das Excel in dem Moment auslöst, in dem ein Speichern angefordert wird — bevor irgendetwas auf die Festplatte geschrieben wird — und reicht Ihnen zwei Flags, SaveAsUI und Cancel. Lernen Sie, wie Sie ein Speichern blockieren, wenn eine Pflichtzelle leer ist, wie Sie automatisch stempeln, wer wann gespeichert hat, warum ein Save-Aufruf im Handler endlos schleift und wie SaveAsUI Sie einen Dateinamen erzwingen lässt.

Henry
VBA Worksheet_Activate und Deactivate in Excel — Code ausführen, wenn Sie das Blatt wechseln (und warum Sie ein Verlassen nicht abbrechen können)

VBA Worksheet_Activate und Deactivate in Excel — Code ausführen, wenn Sie das Blatt wechseln (und warum Sie ein Verlassen nicht abbrechen können)

Worksheet_Activate feuert, wenn ein Blatt zum aktiven wird, und Worksheet_Deactivate feuert genau dann, wenn Sie es verlassen — die Ankunfts- und Abgangsereignisse eines Blatts. Der Haken, der sie prägt — anders als BeforeClose und BeforeSave gibt Ihnen keines ein Cancel, also können Sie einen Blattwechsel beobachten, aber nicht blockieren. Lernen Sie das Aktualisieren-beim-Ansehen-Muster, den Zurückschnellen-Umweg und Handler auf Blattebene gegenüber Arbeitsmappenebene.

Henry
VBA Class Module in Excel — ein eigenes Objekt bauen (Bauplan vs. Instanz und die As-New-Falle)

VBA Class Module in Excel — ein eigenes Objekt bauen (Bauplan vs. Instanz und die As-New-Falle)

Ein VBA Class module lässt Sie einen eigenen Objekttyp definieren — einen Bauplan, der Daten und Verhalten bündelt — und dann mit New unabhängige Instanzen ausstanzen. Der Haken, über den jeder stolpert, ist dass Objekte Referenztypen sind, sodass Set b = a beide Namen auf dieselbe Instanz zeigen lässt, und Dim x As New eine Falle der verzögerten Instanziierung verbirgt. Erfahren Sie, wie der Modulname zum Typnamen wird, wann eine Klasse einen Type schlägt und wie Sie die klassischen New-Fallstricke vermeiden.

Henry
VBA Type in Excel — verwandte Felder in einer Variablen bündeln (benutzerdefinierte Typen vs. Class module)

VBA Type in Excel — verwandte Felder in einer Variablen bündeln (benutzerdefinierte Typen vs. Class module)

Ein VBA Type — ein benutzerdefinierter Typ, deklariert mit Type ... End Type — bündelt mehrere zusammengehörige Felder in einer einzigen Variablen, sodass Name, Age und Salary zusammen reisen statt als drei parallele Arrays. Ein Type ist ein Werttyp, das heißt die Zuweisung einer Type-Variablen an eine andere kopiert jedes Feld, anders als bei Objekten, die sich teilen. Erfahren Sie, wo die Deklaration stehen muss, warum Kopieren-statt-Teilen zählt und ab welchem Punkt Sie zu einem Class module greifen sollten.

Henry
VBA Property in Excel — Get, Let und Set (kontrollierter Zugriff auf die Felder einer Klasse)

VBA Property in Excel — Get, Let und Set (kontrollierter Zugriff auf die Felder einer Klasse)

Property Get, Let und Set verwandeln ein Klassenfeld in ein Tor — eine kleine Prozedur, die Ihren Code ausführt, sobald von außen gelesen oder geschrieben wird, sodass Sie Eingaben prüfen, Werte im Flug berechnen oder ein Feld schreibgeschützt machen können. Die Unterscheidung, über die jeder stolpert, ist Let gegen Set — Let weist einen Wert zu, Set weist ein Objekt zu — und das falsche zu nehmen ist ein Compiler- oder Laufzeitfehler. Lernen Sie das Muster mit dem hinterlegten Feld, wann eine einfache Public-Variable die ehrliche Wahl ist und wie Sie eine schreibgeschützte Property bauen.

Henry
VBA ActiveCell in Excel — die eine Zelle mit dem Cursor (ActiveCell gegen Selection, und wann es schiefgeht)

VBA ActiveCell in Excel — die eine Zelle mit dem Cursor (ActiveCell gegen Selection, und wann es schiefgeht)

ActiveCell ist ein Live-Zeiger auf die eine Zelle, die gerade den Cursor hat — immer genau eine Zelle, auf dem aktiven Blatt, innerhalb der aktuellen Selection. Erfahren Sie, wie sie sich von Selection unterscheidet, wie Sie sie mit .Value und .Offset lesen und schreiben, und den Hauptgrund, warum sie bricht — sie folgt dem Blatt und dem Cursor, die der Benutzer hinterlassen hat, und ist damit das falsche Werkzeug für Code, der nicht davon handelt, wo der Benutzer gerade ist.

Henry
VBA Selection in Excel — mit dem arbeiten, was markiert ist (und warum es nicht immer ein Range ist)

VBA Selection in Excel — mit dem arbeiten, was markiert ist (und warum es nicht immer ein Range ist)

Selection ist ein Live-Zeiger auf das, was gerade markiert ist — meist ein Zellbereich, aber es kann auch ein Diagramm, eine Form oder gar nichts sein. Deshalb stürzt Code, der annimmt, Selection sei ein Bereich, in dem Moment ab, in dem ein Diagramm ausgewählt wird. Erfahren Sie, wie Sie die ausgewählten Zellen durchlaufen, Mehrbereichsauswahlen mit .Areas behandeln, mit TypeName absichern und wann Sie Selection ganz überspringen und Ihren Bereich benennen.

Henry
VBA Select gegen Activate in Excel — brechen Sie die .Select-Gewohnheit des Makrorekorders

VBA Select gegen Activate in Excel — brechen Sie die .Select-Gewohnheit des Makrorekorders

Der Makrorekorder schreibt, was Ihre Maus tut — ein Blatt auswählen, eine Zelle auswählen, auf der Selection wirken — weil ein Mensch so arbeitet, nicht wie Code es sollte. Erfahren Sie den echten Unterschied zwischen Select, das eine oder viele Zellen markiert, und Activate, das die eine aktive Zelle setzt, warum fast jedes .Select ein langsamer, fragiler Umweg ist, den Sie löschen können, die seltenen Fälle, in denen Sie wirklich auswählen müssen, und wie Sie Rekorder-Code so umbauen, dass er direkt auf qualifizierten Bereichsreferenzen wirkt.

Henry
VBA Workbook_Open in Excel — ein Makro automatisch beim Öffnen der Datei ausführen (und wo der Code liegen muss)

VBA Workbook_Open in Excel — ein Makro automatisch beim Öffnen der Datei ausführen (und wo der Code liegen muss)

Workbook_Open ist das Ereignis, das Excel in dem Moment auslöst, in dem Ihre Datei fertig geöffnet ist — Code, der sich von selbst ausführt, ganz ohne Schaltfläche. Doch es feuert nur, wenn es im ThisWorkbook-Objekt liegt (nicht in einem gewöhnlichen Module) und der Benutzer Makros aktiviert hat. Erfahren Sie, wo der Code liegen muss, warum er stillschweigend nie läuft, Workbook_Open gegenüber Auto_Open und wie Sie ihn schnell und absturzsicher halten.

Henry
VBA Worksheet_Change in Excel — Code ausführen, wenn eine Zelle bearbeitet wird (und die Endlosschleife, die Sie vermeiden müssen)

VBA Worksheet_Change in Excel — Code ausführen, wenn eine Zelle bearbeitet wird (und die Endlosschleife, die Sie vermeiden müssen)

Worksheet_Change ist das Ereignis, das Excel jedes Mal auslöst, wenn ein Benutzer eine Zelle auf dem Blatt bearbeitet, und reicht Ihnen die geänderte Zelle als Target. Die Falle, in die jeder tappt — Ihr Handler schreibt in eine Zelle, dieses Schreiben löst das Ereignis erneut aus, und Excel dreht sich endlos. Lernen Sie die Application.EnableEvents-Lösung, wie Sie es mit Intersect eingrenzen, warum es Formel-Neuberechnungen ignoriert und wo der Code liegen muss.

Henry
VBA Worksheet_SelectionChange in Excel — Code ausführen, wenn sich der Cursor bewegt (die aktive Zeile ohne Ruckeln hervorheben)

VBA Worksheet_SelectionChange in Excel — Code ausführen, wenn sich der Cursor bewegt (die aktive Zeile ohne Ruckeln hervorheben)

Worksheet_SelectionChange ist das Ereignis, das Excel jedes Mal auslöst, wenn sich der Cursor bewegt — ein Klick, eine Pfeiltaste, ein Enter. Es reicht Ihnen die neue Auswahl als Target, was dem Cursor folgende Kniffe wie das Hervorheben der aktiven Zeile möglich macht. Doch es feuert ununterbrochen, also lässt schwerer Code das ganze Blatt ruckeln. Lernen Sie das Muster zum Hervorheben der aktiven Zeile richtig kennen, warum es in eine Schleife geraten kann und wie Sie es federleicht halten.

Henry
VBA For Each in Excel — eine Collection ohne Index durchlaufen (und die Fallen, die es verbirgt)

VBA For Each in Excel — eine Collection ohne Index durchlaufen (und die Fallen, die es verbirgt)

For Each sagt „mach das mit jedem Element“ und überlässt VBA die Reihenfolge und die Grenzen — kein Zähler, kein Off-by-one. Doch diese Bequemlichkeit verbirgt drei harte Regeln: die Schleifenvariable muss ein Objekt oder eine Variant sein, das Durchlaufen eines Arrays ist schreibgeschützt, und Sie dürfen niemals aus einer Collection löschen, die Sie gerade durchlaufen. Erfahren Sie, wann For Each das For…Next schlägt und wann es Sie klammheimlich im Stich lässt.

Henry
VBA Collection in Excel — die geordnete, wachsende Liste (und warum sie kein Dictionary ist)

VBA Collection in Excel — die geordnete, wachsende Liste (und warum sie kein Dictionary ist)

Eine VBA Collection ist eine geordnete Liste, die wächst, während Sie mit Add hinzufügen — kein ReDim, kein Größenraten. Doch sie hat vier scharfe Kanten, die Anfänger jedes Mal treffen: sie ist 1-basiert statt 0-basiert, Sie können ein Element nicht überschreiben (nur Add/Remove), doppelte Schlüssel werfen Fehler 457, und es gibt keine eingebaute Exists-Prüfung. Erfahren Sie, wann eine Collection ein Array oder ein Dictionary schlägt und wann sie Sie klammheimlich Zeit kostet.

Henry
VBA With-Anweisung in Excel — das Objekt einmal schreiben (und der führende Punkt, der alles entscheidet)

VBA With-Anweisung in Excel — das Objekt einmal schreiben (und der führende Punkt, der alles entscheidet)

Die With-Anweisung benennt ein Objekt einmal und lässt Sie seine Member mit einem nackten führenden Punkt ansprechen — weniger Tippen, schnellerer Code, sauberere Blöcke. Doch dieser führende Punkt ist das ganze Spiel: vergessen Sie ihn und aus .Font wird Font, das sich klammheimlich an das aktive Blatt statt an Ihr Objekt bindet. Erfahren Sie, was With wirklich optimiert, die Falle des fehlenden Punkts und wie With mit For Each zusammenspielt.

Henry
Excel-Funktion AVERAGE — warum Leerzelle und Null zwei verschiedene Ergebnisse liefern

Excel-Funktion AVERAGE — warum Leerzelle und Null zwei verschiedene Ergebnisse liefern

Excels AVERAGE wirkt trivial — bis eine Leerzelle und eine Null still zwei verschiedene Mittelwerte derselben Daten erzeugen. AVERAGE überspringt Leerzellen und Text, zählt aber eine echte 0 mit: „kein Verkauf“ als 0 zu erfassen statt die Zelle leer zu lassen verändert die Zahl unbemerkt, und nichts in der Formel warnt Sie. Lernen Sie das mentale Modell (Summe ÷ Anzahl nur der Zahlen), die Null-vs.-Leer-Falle, die über Ihr Ergebnis entscheidet, warum AVERAGEA fast nie das ist, was Sie wollen, und wann ein Mittelwert von Mittelwerten die völlig falsche Frage ist.

Henry
Gewichteter Mittelwert in Excel — SUMPRODUCT ÷ SUM (und warum der Mittelwert von Mittelwerten lügt)

Gewichteter Mittelwert in Excel — SUMPRODUCT ÷ SUM (und warum der Mittelwert von Mittelwerten lügt)

Excel hat keine WEIGHTEDAVG-Funktion — der korrekte gewichtete Mittelwert ist =SUMPRODUCT(werte, gewichte)/SUM(gewichte). Wichtig ist nicht die Formel, sondern der Fehler, den sie behebt: Ein schlichter AVERAGE über Zahlen, die unterschiedlich große Gruppen zusammenfassen, gibt jeder Gruppe dasselbe Gewicht — eine Region mit 3 Bestellungen zählt so viel wie eine mit 300. Lernen Sie das mentale Modell (Gewichte verteilen den Einfluss nach Größe), warum Sie durch SUM(gewichte) teilen, die Abkürzung bei Gewichten, die sich zu 1 summieren, Beispiele zu Notenschnitt, Portfolio und Mischpreis, und wie Sie eine Bedingung hinzufügen.

Henry
Excel GEOMEAN, TRIMMEAN & HARMEAN — die Mittelwerte für die Fälle, in denen der Mittelwert lügt

Excel GEOMEAN, TRIMMEAN & HARMEAN — die Mittelwerte für die Fälle, in denen der Mittelwert lügt

Drei Spezial-Mittelwerte für die Fälle, in denen ein schlichter AVERAGE eine falsche oder irreführende Antwort gibt. GEOMEAN ist der korrekte Mittelwert für Wachstumsraten und Renditen — ein Jahr mit +50 % und eines mit −50 % mitteln sich nicht zu 0 %. TRIMMEAN wirft die extremen hohen und niedrigen Werte vor dem Mitteln weg, so wie es die olympische Wertung tut. HARMEAN ist der richtige Mittelwert für Raten wie Geschwindigkeit und KGV. Lernen Sie, welche Lüge jeder behebt, das GEOMEAN(1+r)−1-Muster für die echte CAGR, warum die drei Mittelwerte stets harmonisch ≤ geometrisch ≤ arithmetisch geordnet sind, und die #ZAHL!-Fallen.

Henry
Excel PRODUKT-Funktion — einen ganzen Bereich multiplizieren (und warum sie mehr ist als nur *)

Excel PRODUKT-Funktion — einen ganzen Bereich multiplizieren (und warum sie mehr ist als nur *)

Excels PRODUKT-Funktion multipliziert einen ganzen Bereich mit einem einzigen Aufruf — doch der eigentliche Grund, sie dem Operator * vorzuziehen, ist ihr Umgang mit Text und leeren Zellen: Sie überspringt beide, während * bei Text einen Fehler wirft oder Ihr Ergebnis bei einer leeren Zelle still auf 0 setzt. Lernen Sie das mentale Modell (PRODUKT ist der Multiplikations-Zwilling von SUMME), den Verkettungs-Trick =PRODUKT(1+Bereich), worin sich PRODUKT von SUMMENPRODUKT unterscheidet und wann eine Kette aus * tatsächlich die bessere Wahl ist.

Henry
Excel Fakultät (FAKULTÄT) — n!, ZWEIFAKULTÄT & POLYNOMIAL (und der 171!-Überlauf)

Excel Fakultät (FAKULTÄT) — n!, ZWEIFAKULTÄT & POLYNOMIAL (und der 171!-Überlauf)

Excels FAKULTÄT-Funktion berechnet eine Fakultät — =FAKULTÄT(5) ist 5×4×3×2×1 = 120 —, doch zuerst gilt es zu verstehen, was eine Fakultät bedeutet: die Anzahl der Möglichkeiten, n verschiedene Dinge anzuordnen. Lernen Sie, warum FAKULTÄT(0) gleich 1 ist, warum FAKULTÄT(171) den Fehler #ZAHL! liefert (die größtmögliche Fakultät in Excel ist 170!), worin sich ZWEIFAKULTÄT und POLYNOMIAL unterscheiden und warum FAKULTÄT der Grundbaustein ist, aus dem jede Funktion für Kombinationen und Variationen gebaut ist.

Henry
Excel KOMBINATIONEN & VARIATIONEN — Kombinationen vs. Variationen (Kommt es auf die Reihenfolge an?)

Excel KOMBINATIONEN & VARIATIONEN — Kombinationen vs. Variationen (Kommt es auf die Reihenfolge an?)

Excels KOMBINATIONEN und VARIATIONEN zählen beide, auf wie viele Arten Sie k aus n Elementen auswählen können — der Unterschied liegt darin, ob die Reihenfolge zählt. VARIATIONEN zählt geordnete Anordnungen (ein Siegertreppchen, eine PIN); KOMBINATIONEN zählt ungeordnete Auswahlen (eine Lotterie, ein Ausschuss) und ergibt stets die kleinere Zahl. Lernen Sie das 2×2-Raster, das jedes Mal die richtige Funktion trifft (Reihenfolge × Wiederholung → VARIATIONEN / VARIATIONEN2 / KOMBINATIONEN / KOMBINATIONEN2), das Lotterie-Beispiel =KOMBINATIONEN(49;6) und warum die falsche Wahl keinen Fehler erzeugt — nur eine Anzahl, die um den Faktor k! danebenliegt.

Henry
Excel TIME, HOUR, MINUTE & SECOND — Den Bruchteil hinter der Uhr lesen und aufbauen

Excel TIME, HOUR, MINUTE & SECOND — Den Bruchteil hinter der Uhr lesen und aufbauen

Eine Uhrzeit ist in Excel ein Bruchteil eines 24-Stunden-Tages — 6:00 Uhr ist buchstäblich 0.25. HOUR, MINUTE und SECOND lesen die Bestandteile aus diesem Bruchteil heraus; TIME baut aus Bestandteilen einen Bruchteil und läuft über Mitternacht hinaus still um; TIMEVALUE parst eine Textzeit in den Bruchteil. Lernen Sie das mentale Modell, warum HOUR bei einer 30-Stunden-Dauer 6 zurückgibt, wie TIME(25,0,0) zu 1:00 Uhr wird, wie man 90 Minuten addiert und wann stattdessen einfache Arithmetik das richtige Werkzeug ist.

Henry
Zeit in Dezimalstunden umwandeln in Excel — Der ×24-Trick (und Arbeitsstunden berechnen)

Zeit in Dezimalstunden umwandeln in Excel — Der ×24-Trick (und Arbeitsstunden berechnen)

Eine Zeit ist in Excel ein Bruchteil eines Tages, also wird 8:15 als 0.34375 gespeichert, nicht als 8.25. Um sie in Dezimalstunden umzuwandeln, multiplizieren Sie mit 24 — die meistgesuchte Zeitformel überhaupt. Erfahren Sie, warum Stunden × Stundensatz 24-mal zu klein herauskommt, wie (Ende − Start) × 24 die Arbeitsstunden liefert, den MOD-Trick für Nachtschichten über Mitternacht, das Abziehen unbezahlter Pausen und das Runden abrechenbarer Zeit auf die nächste Viertelstunde.

Henry
Excel Zeit über 24 Stunden summieren — Warum sich Ihre Summe zurücksetzt (und die [h]:mm-Lösung)

Excel Zeit über 24 Stunden summieren — Warum sich Ihre Summe zurücksetzt (und die [h]:mm-Lösung)

Summieren Sie eine Spalte mit Zeiten, und die Summe zeigt 1:30 statt 25:30 — SUM stimmt, das Format lügt. Excels Standard-h:mm zeigt nur den Rest nach ganzen Tagen und läuft daher bei 24 Stunden um. Die Lösung ist das benutzerdefinierte Format [h]:mm, bei dem die Klammern Excel sagen, es soll aufsummieren statt umlaufen. Erfahren Sie, warum negative Zeiten Rautezeichen zeigen, wie Sie eine Dezimalsumme erhalten, und lernen Sie den Zeitformat-Spickzettel kennen.

Henry
Excel SIN, COS & TAN — Warum =SIN(30) nicht 0,5 ist (die Bogenmaß-Falle)

Excel SIN, COS & TAN — Warum =SIN(30) nicht 0,5 ist (die Bogenmaß-Falle)

Excels SIN, COS und TAN messen Winkel im Bogenmaß, nicht in Grad — deshalb liefert =SIN(30) den Wert -0,988 statt 0,5, und Excel meldet das nie als Fehler. Lernen Sie das eine mentale Modell, das jede falsche Trig-Antwort behebt (Grad in BOGENMASS einpacken), warum TAN nahe 90° explodiert statt einen Fehler zu werfen, und wie Sie über ein ganzes Blatt eine einzige Winkeleinheit halten.

Henry
Excel ARCTAN & ARCTAN2 — Arkustangens, inverser Tangens und der Winkel aus X,Y

Excel ARCTAN & ARCTAN2 — Arkustangens, inverser Tangens und der Winkel aus X,Y

Die Arkusfunktionen ARCSIN, ARCCOS, ARCTAN und ARCTAN2 verwandeln ein Verhältnis zurück in einen Winkel — und sie liefern diesen Winkel im Bogenmaß, also packen Sie sie in GRAD. Lernen Sie, warum ARCTAN nicht erkennen kann, in welchem Quadranten Sie sind, wie ARCTAN2 das behebt, die berühmte Falle, dass Excels ARCTAN2(x; y) die Argumentreihenfolge jeder Programmiersprache umkehrt, und warum ARCSIN/ARCCOS für alles außerhalb von -1..1 den Wert #ZAHL! liefert.

Henry
Excel FV- & PV-Funktionen — Endwert, Barwert und die Fünferregel

Excel FV- & PV-Funktionen — Endwert, Barwert und die Fünferregel

FV und PV sind dieselbe Zeitwert-des-Geldes-Gleichung wie PMT, nur nach einer anderen Unbekannten gelöst. Fünf Variablen — rate, nper, pmt, pv, fv — und eine Funktion pro Unbekannter: Kennen Sie vier, erhalten Sie die fünfte. Lernen Sie den Endwert eines Sparplans, den Barwert eines Zahlungsstroms, dieselbe Vorzeichenkonvention (Einzahlung ist negativ), das Argument type für vorschüssige Renten und wann Sie zu RATE und NPER greifen.

Henry
Excel NPV & IRR — Discounted Cashflow und die Rendite

Excel NPV & IRR — Discounted Cashflow und die Rendite

NPV und IRR bewältigen die Zahlungsströme, die PMT und FV nicht können — die unregelmäßigen, schwankenden eines echten Projekts. Der größte Fehler und der ganze Grund, das hier zu lesen: Excels NPV nimmt an, dass der erste Wert eine Periode in der ZUKUNFT eintrifft, also muss eine Investition zum Zeitpunkt null AUSSERHALB des NPV-Aufrufs stehen. Lernen Sie NPV richtig gemacht, IRR und warum es #NUM! zurückgibt, die Falle der mehrfachen IRR und warum XNPV und XIRR (echte Datumsangaben) das sind, was Analysten wirklich nutzen.

Henry
Excel DSUM & DCOUNT — Zeilen summieren und zählen, die zu einer Kriterientabelle passen

Excel DSUM & DCOUNT — Zeilen summieren und zählen, die zu einer Kriterientabelle passen

DSUM und DCOUNT beantworten die Frage „summiere (oder zähle) die passenden Zeilen“ — aber die Bedingungen schreiben Sie als kleine Tabelle aufs Blatt, nicht in die Formel. Lernen Sie die drei Argumente, warum die Datenbank ihre Kopfzeile enthalten muss, wie ein Kriterienbereich UND und ODER kodiert, warum DCOUNT Text ignoriert (nutzen Sie DCOUNTA) und wann ein sichtbarer Kriterienblock SUMIFS schlägt.

Henry
Excel DGET-Funktion — genau einen Datensatz extrahieren und laut scheitern, wenn es keinen gibt

Excel DGET-Funktion — genau einen Datensatz extrahieren und laut scheitern, wenn es keinen gibt

DGET holt einen einzelnen Wert aus einer Tabelle über einen Kriterienbereich — und sein prägendes Merkmal ist, dass es absichtlich einen Fehler wirft: #NUM! wenn mehr als eine Zeile passt, #VALUE! wenn keine passt. Das ist kein Bug, sondern eine eingebaute Eindeutigkeitsprüfung, die VLOOKUP stillschweigend überspringt. Lernen Sie die drei Argumente, Nachschläge mit mehreren Bedingungen ganz ohne Hilfsspalte und wann DGET XLOOKUP schlägt (und wann nicht).

Henry
Excel-Datenbankfunktionen — DAVERAGE, DMAX, DMIN und den Kriterienbereich meistern

Excel-Datenbankfunktionen — DAVERAGE, DMAX, DMIN und den Kriterienbereich meistern

Die zwölf D-Funktionen — DSUM, DCOUNT, DGET, DAVERAGE, DMAX, DMIN und mehr — teilen sich alle eine Signatur und eine Fertigkeit: den Kriterienbereich. Lernen Sie, wie ein Kriterienblock UND und ODER kodiert, warum ein Bereich auf einem Feld seine Überschrift zweimal braucht, wie formelbasierte Kriterien funktionieren (und die Überschriftenregel, an der sie stehen und fallen), die Beginnt-mit-Falle mit ihren zu vielen Treffern und den Entscheidungsbaum für D-Funktionen gegen SUMIFS gegen FILTER.

Henry
Excel GROUPBY-Funktion — Daten mit einer Formel gruppieren und zusammenfassen

Excel GROUPBY-Funktion — Daten mit einer Formel gruppieren und zusammenfassen

GROUPBY(Zeilenfelder; Werte; Funktion) gruppiert Zeilen und aggregiert sie in einer einzigen überlaufenden Formel — der moderne Ersatz für das Muster UNIQUE + SUMIFS und, für viele Berichte, für die PivotTable selbst. Der Haken, über den jeder stolpert: Sie übergeben die Funktion beim Namen (SUM, nicht SUM()), denn es ist ein LAMBDA, das Excel je Gruppe anwendet. Lernen Sie die drei erforderlichen Argumente, warum sie live neu rechnet, wo eine PivotTable veraltet, wie Sie Summen hinzufügen und nach dem aggregierten Wert sortieren, und welche Version sie braucht.

Henry
Excel PIVOTBY-Funktion — Eine PivotTable mit einer Formel bauen

Excel PIVOTBY-Funktion — Eine PivotTable mit einer Formel bauen

PIVOTBY(Zeilenfelder; Spaltenfelder; Werte; Funktion) ist GROUPBY mit einer zweiten Dimension — es kreuztabelliert Daten in ein Raster aus Zeilen mal Spalten, eine PivotTable als einzelne überlaufende Formel, die live neu rechnet, ohne Aktualisieren. Lernen Sie die vier erforderlichen Argumente, warum Zeilenfelder und Spaltenfelder nicht austauschbar sind, wie Sie Summen auf beiden Achsen hinzufügen und die echte Abwägung gegenüber einer klassischen PivotTable (live und referenzierbar, aber nicht per Drag-and-drop interaktiv). Braucht Excel 365.

Henry
GROUPBY & PIVOTBY für Fortgeschrittene — Prozent vom Gesamt, mehrere Kennzahlen und eigene Aggregationen

GROUPBY & PIVOTBY für Fortgeschrittene — Prozent vom Gesamt, mehrere Kennzahlen und eigene Aggregationen

Die optionalen Argumente, die GROUPBY und PIVOTBY teilen, sind der Punkt, an dem sie aufhören, PivotTables zu ersetzen, und anfangen, sie zu schlagen: PERCENTOF für Prozent vom Gesamt in einem Wort, mehrere Wertespalten für mehrere Kennzahlen auf einmal, ein LAMBDA im Funktionsplatz für einen gewichteten Mittelwert, den PivotTables nicht können, und Filterarray, um nur die gewünschten Zeilen zu aggregieren. Lernen Sie die Grammatik eta-reduzierter Funktionen, die Prozent-vom-Gesamt-Falle und die Fehler (#CALC!, #FIELD!, #SPILL!), die Ihnen sagen, welches Argument falsch ist.

Henry
Excel ROW & COLUMN — Die Position einer Zelle ermitteln, nicht ihren Wert

Excel ROW & COLUMN — Die Position einer Zelle ermitteln, nicht ihren Wert

ROW([reference]) liefert eine Zeilennummer und COLUMN([reference]) eine Spaltennummer — die Position einer Zelle, niemals ihren Inhalt. Ohne Argument liefert jede Funktion die Koordinate der Zelle, in der die Formel steht. Lernen Sie das mentale Modell, das "wo eine Zelle ist" von "was in ihr steht" trennt, wie ROW() mit einem Anker selbstheilende Seriennummern baut, warum MOD(ROW(),n) Zebrastreifen und Gruppierung antreibt, und die Zahl-statt-Buchstabe-Falle bei COLUMN.

Henry
Excel ROWS & COLUMNS — Die Größe eines Bereichs zählen, nicht seine Position

Excel ROWS & COLUMNS — Die Größe eines Bereichs zählen, nicht seine Position

ROWS(array) liefert, wie viele Zeilen ein Bereich hat, und COLUMNS(array), wie viele Spalten — eine Größe, keine Position. ROWS(A1:A10) ist 10; COLUMNS(A1:C1) ist 3. Lernen Sie, warum sich die Pluralformen von ROW und COLUMN unterscheiden, die entscheidende Verwendung eines selbstanpassenden VLOOKUP-Spaltenindex mit COLUMNS(), das Zählen der Zeilen, die ein FILTER zurückgibt, und die Ganze-Spalte-Falle, in der ROWS(A:A) 1.048.576 ist.

Henry
Excel HYPERLINK-Funktion — Klickbare Links bauen, die sich selbst aktualisieren

Excel HYPERLINK-Funktion — Klickbare Links bauen, die sich selbst aktualisieren

HYPERLINK(link_location, [friendly_name]) ist eine Formel, die einen klickbaren Sprung baut — zu einer Zelle, einem Blatt, einer Datei, einer Webseite oder einer E-Mail —, dessen Ziel andere Formeln berechnen können. Sie ist nicht dasselbe wie das Menü Einfügen > Link, das einen statischen Link erstellt. Lernen Sie das #-Präfix für Sprünge innerhalb einer Arbeitsmappe, dynamische Ziele mit ADDRESS und MATCH, warum der Link beim Klicken navigiert statt einen Wert zu holen, und warum Sie immer friendly_name übergeben sollten.

Henry
Excel ZUFALLSZAHL & ZUFALLSBEREICH — Zufallszahlen erzeugen und ihr ständiges Wechseln stoppen

Excel ZUFALLSZAHL & ZUFALLSBEREICH — Zufallszahlen erzeugen und ihr ständiges Wechseln stoppen

ZUFALLSZAHL() liefert eine zufällige Dezimalzahl von 0 bis knapp unter 1; ZUFALLSBEREICH(Untergrenze; Obergrenze) liefert eine zufällige Ganzzahl in einem Bereich, beide Enden inklusive. Lernen Sie das mentale Modell, dass beide flüchtig sind — sie würfeln bei jeder Bearbeitung neu —, warum das die häufigste Falle ist, wie Sie die Werte mit Inhalte einfügen einfrieren, warum ZUFALLSBEREICH Werte wiederholt und wie die Formel =a+(b-a)*ZUFALLSZAHL() zufällige Dezimalzahlen erzeugt.

Henry
Excel ZUFALLSMATRIX — Eine Formel für ein ganzes Raster voller Zufallszahlen

Excel ZUFALLSMATRIX — Eine Formel für ein ganzes Raster voller Zufallszahlen

ZUFALLSMATRIX([Zeilen];[Spalten];[Min];[Max];[Ganzzahl]) verteilt mit einer Formel einen ganzen Block Zufallszahlen — ZUFALLSZAHL und ZUFALLSBEREICH verschmolzen und aufgewertet. Lernen Sie, warum das Argument Ganzzahl standardmäßig FALSCH ist (Sie bekommen also Dezimalzahlen, sofern Sie nicht ausdrücklich Ganzzahlen verlangen), warum es weiterhin flüchtig ist, wann es #ÜBERLAUF! auslöst und den Mischtrick SORTBY(Liste; ZUFALLSMATRIX(...)).

Henry
So wählen, ziehen und mischen Sie Zeilen zufällig in Excel

So wählen, ziehen und mischen Sie Zeilen zufällig in Excel

Der eine Trick hinter jeder Zufallsauswahl in Excel: Hängen Sie jeder Zeile eine Zufallszahl an und sortieren Sie danach. Lernen Sie den modernen Einzeiler TAKE(SORTBY(Daten; ZUFALLSMATRIX(...)); n), die klassische Methode mit ZUFALLSZAHL-Hilfsspalte, die entscheidende Unterscheidung zwischen Ziehen mit und ohne Zurücklegen, die Stichproben ruiniert, und warum Sie die Zufallsspalte vor dem Sortieren einfrieren müssen.

Henry
Excel POTENZ & WURZEL — Potenzen, Wurzeln und die Fallen der Operatorrangfolge

Excel POTENZ & WURZEL — Potenzen, Wurzeln und die Fallen der Operatorrangfolge

POTENZ(x;n) und der Operator ^ potenzieren eine Zahl; WURZEL(x) ist die Kurzform der Quadratwurzel für ^(1/2). Lernen Sie das mentale Modell, dass Wurzeln nichts anderes als gebrochene Exponenten sind, warum =-3^2 den Wert 9 ergibt und =27^1/3 ebenfalls 9 (beides Vorrangfallen), warum die WURZEL einer negativen Zahl #ZAHL! liefert und wie eine einzige POTENZ-Formel Ihnen die CAGR berechnet.

Henry
Excel ABS & VORZEICHEN — Absolutwert, Betrag und das weggeworfene Vorzeichen

Excel ABS & VORZEICHEN — Absolutwert, Betrag und das weggeworfene Vorzeichen

ABS(x) liefert den Betrag einer Zahl (den Abstand von null); VORZEICHEN(x) liefert nur ihre Richtung als -1, 0 oder +1. Lernen Sie das mentale Modell, dass jede Zahl Betrag mal Richtung ist, warum eine Toleranzprüfung ABS(A-B) braucht und nicht A-B, die Identität x = VORZEICHEN(x)*ABS(x) und warum ABS ein Werkzeug für Fälle ist, in denen die Richtung wirklich keine Rolle spielt — kein Pflaster über einem Vorzeichen, mit dem Sie nicht gerechnet haben.

Henry
Excel EXP, LN & LOG — Logarithmen, Wachstumsraten und die Falle der Standardbasis

Excel EXP, LN & LOG — Logarithmen, Wachstumsraten und die Falle der Standardbasis

EXP(x) erhebt e in eine Potenz; LN, LOG10 und LOG sind seine Umkehrungen. Lernen Sie das mentale Modell, dass ein Logarithmus rückwärts gelaufenes Potenzieren ist (nach dem Exponenten auflösen), warum LOG(x) ohne Basis zur Basis 10 gehört und NICHT der natürliche Logarithmus ist, warum LN(0) und LOG einer negativen Zahl #ZAHL! ergeben, und die zwei Formeln, die Anwender in der Praxis wirklich brauchen: geometrisches Mittel = EXP(MITTELWERT(LN)) und Jahre bis zum Ziel = LN(Ziel)/LN(Rate).

Henry
Excel FORMELTEXT & ISTFORMEL (FORMULATEXT & ISFORMULA) — Die Formel in einer Zelle lesen und prüfen

Excel FORMELTEXT & ISTFORMEL (FORMULATEXT & ISFORMULA) — Die Formel in einer Zelle lesen und prüfen

FORMELTEXT (FORMULATEXT) gibt die Formel einer Zelle als Text zurück; ISTFORMEL (ISFORMULA) liefert WAHR, wenn eine Zelle eine Formel enthält. Lernen Sie das mentale Modell — diese Funktionen prüfen ein Tabellenblatt, sie rechnen nicht —, das #NV bei einer Nicht-Formel-Zelle, den Trick mit der bedingten Formatierung, der jede Formel hervorhebt, und wann Sie zu ihnen statt zu Formeln anzeigen greifen.

Henry
Excel ZELLE (CELL) — Adresse, Format, Typ und Dateiname einer Zelle abrufen

Excel ZELLE (CELL) — Adresse, Format, Typ und Dateiname einer Zelle abrufen

ZELLE (CELL) mit ZELLE(Infotyp; [Bezug]) gibt Metadaten über eine Zelle zurück — ihre Adresse, Zeile, Spalte, ihr Zahlenformat, ihren Inhaltstyp oder den Dateinamen der Arbeitsmappe — statt ihres Werts. Lernen Sie das mentale Modell, warum Infotyp eine Schlüsselwort-Zeichenkette ist, die eine Aufgabe, in der ZELLE noch unschlagbar ist (Dateipfad und Blattname holen), und die Neuberechnungs-Falle, die sie falsch aussehen lässt.

Henry
Excel TYP & N (TYPE & N) — Diagnostizieren, welche Art Wert Sie wirklich haben

Excel TYP & N (TYPE & N) — Diagnostizieren, welche Art Wert Sie wirklich haben

TYP (TYPE) gibt einen Code dafür zurück, welche Art Wert eine Zelle enthält — 1 Zahl, 2 Text, 4 Wahrheitswert, 16 Fehler, 64 Matrix — und N (N) zwingt einen Wert in eine Zahl. Lernen Sie das mentale Modell, wie TYP als Text gespeicherte Zahlen festnagelt, warum N(irgendetwas) 0 statt eines Fehlers zurückgibt und den klassischen N()-Trick, um einen Kommentar in eine Formel einzubetten.

Henry
Excel ERSTERWERT (SWITCH) — Verschachtelte WENN-Formeln durch eine flache, lesbare Formel ersetzen

Excel ERSTERWERT (SWITCH) — Verschachtelte WENN-Formeln durch eine flache, lesbare Formel ersetzen

ERSTERWERT (SWITCH) vergleicht einen Ausdruck mit einer Liste exakter Werte und gibt den ersten Treffer zurück — =ERSTERWERT(Ausdruck; Wert1; Ergebnis1; Wert2; Ergebnis2; Standard). Lernen Sie das mentale Modell, warum die Funktion ausschließlich auf exakte Gleichheit prüft (und wo damit die Grenze zwischen ERSTERWERT und WENNS verläuft), die Standardwert-Falle, die #NV zurückgibt, den ERSTERWERT(WAHR())-Trick für Bereiche und wann Sie sie statt eines verschachtelten WENN einsetzen.

Henry
Excel WAHL (CHOOSE) — Das n-te Element nach Position auswählen (und seine verborgene Superkraft)

Excel WAHL (CHOOSE) — Das n-te Element nach Position auswählen (und seine verborgene Superkraft)

WAHL gibt anhand der Position das n-te Element aus einer Liste zurück — =WAHL(Index; Wert1; Wert2; …). Lernen Sie das mentale Modell, warum die Funktion nach Position und nicht nach Übereinstimmung auswählt (die Grenze zwischen WAHL und ERSTERWERT), das #WERT!, das Sie bei einem Index außerhalb des gültigen Bereichs erhalten, und ihre unterschätzte Superkraft — ganze Bereiche zurückzugeben, um Szenarien umzuschalten oder Spalten für einen Links-SVERWEIS umzusortieren.

Henry
Excel MAXWENNS & MINWENNS — Bedingtes Maximum und Minimum ohne Matrixformeln

Excel MAXWENNS & MINWENNS — Bedingtes Maximum und Minimum ohne Matrixformeln

MAXWENNS und MINWENNS geben den größten bzw. kleinsten Wert zurück, der eine oder mehrere Bedingungen erfüllt — =MAXWENNS(Max_Bereich; Kriterien_Bereich1; Kriterien1; …). Lernen Sie das mentale Modell, die Argumentreihenfolge, die SUMMEWENN-Nutzer stolpern lässt, warum sie die alte Matrixformel {=MAX(WENN())} ersetzen und die stille 0-Falle, die sie liefern, wenn keine Zeile passt.

Henry
Excel COUNTIF-Funktion — Zellen zählen, die eine Bedingung erfüllen (und die Kriterien-Fallen)

Excel COUNTIF-Funktion — Zellen zählen, die eine Bedingung erfüllen (und die Kriterien-Fallen)

COUNTIF zählt Zellen, die eine einzige Bedingung erfüllen — =COUNTIF(range, criteria) —, wobei das Kriterium ein kleiner, als Text geschriebener Test ist. Erfahren Sie, warum Operatoren in Anführungszeichen gehören, wie Sie mit & einen Zellwert als Schwelle nutzen, wie Platzhalter für den Textabgleich funktionieren, was es mit der 15-Stellen-Falle bei langen Zahlen auf sich hat und wann Sie zu COUNTIFS wechseln sollten.

Henry
Eindeutige Werte in Excel zählen — der moderne Weg und die klassische Formel

Eindeutige Werte in Excel zählen — der moderne Weg und die klassische Formel

Excel hat keine COUNTUNIQUE-Funktion, also gibt es für das Zählen unterschiedlicher Werte zwei Antworten: das moderne =COUNTA(UNIQUE(range)) in 365/2021 und das klassische =SUMPRODUCT(1/COUNTIF(range,range)) für ältere Versionen. Erfahren Sie, warum Leerzellen Ihre Zählung um 1 erhöhen, wie Sie sie mit FILTER ausschließen, warum die klassische Formel #DIV/0! auslöst und worin sich unterschiedliche Werte von Werten unterscheiden, die nur einmal vorkommen.

Henry
Excel GLÄTTEN & SÄUBERN (TRIM & CLEAN) — den unsichtbaren Müll entfernen, der Ihre Verweise zerschießt

Excel GLÄTTEN & SÄUBERN (TRIM & CLEAN) — den unsichtbaren Müll entfernen, der Ihre Verweise zerschießt

GLÄTTEN (TRIM) und SÄUBERN (CLEAN) entfernen beide unsichtbaren Ballast aus importiertem Text, zielen aber auf Unterschiedliches: GLÄTTEN beseitigt überflüssige Leerzeichen (ASCII 32), SÄUBERN entfernt nicht druckbare Steuerzeichen (0–31). Keines von beiden entfernt das geschützte Leerzeichen CHAR(160), das Web- und PDF-Kopien hinterlassen — der häufigste Grund für „GLÄTTEN funktioniert nicht“. Lernen Sie das Denkmodell und die eine Formel, die wirklich alles erwischt.

Henry
Excel GROSS, KLEIN & GROSS2 (UPPER, LOWER & PROPER) — Groß-/Kleinschreibung ändern, ohne die Daten zu verstümmeln

Excel GROSS, KLEIN & GROSS2 (UPPER, LOWER & PROPER) — Groß-/Kleinschreibung ändern, ohne die Daten zu verstümmeln

GROSS (UPPER), KLEIN (LOWER) und GROSS2 (PROPER) schreiben Text um, aber Groß-/Kleinschreibung ist in Excel eine Frage der Anzeige und des Exports, nicht des Vergleichs — der =-Vergleich und SVERWEIS ignorieren die Schreibweise ohnehin. Die eigentliche Falle ist GROSS2: Es macht aus McDonald ein Mcdonald und aus iPhone ein Iphone. Lernen Sie, wann die Schreibweise wirklich zählt und warum GROSS2 ein Ausgangspunkt ist, kein Endergebnis.

Henry
Excel-Funktion LÄNGE (LEN) — Zeichen zählen und den Müll aufdecken, den Sie nicht sehen

Excel-Funktion LÄNGE (LEN) — Zeichen zählen und den Müll aufdecken, den Sie nicht sehen

LÄNGE (LEN) zählt die Zeichen in einer Zelle, aber ihre eigentliche Stärke ist diagnostisch: Weil sie jedes Zeichen mitzählt, auch nachgestellte und nicht druckbare, ist LÄNGE Ihr Beweis, dass eine Zelle, die wie „Apple“ aussieht, in Wahrheit „Apple “ mit 6 Zeichen ist. Lernen Sie LÄNGE für die Validierung, den LÄNGE-minus-LÄNGE-Zähltrick, dynamische Extraktion und warum LÄNGE die Zahlenformatierung ignoriert.

Henry
Excel SVERWEIS-Funktion — richtig anwenden, und das 4. Argument, das alles kaputtmacht

Excel SVERWEIS-Funktion — richtig anwenden, und das 4. Argument, das alles kaputtmacht

VLOOKUP durchsucht die linke Spalte einer Tabelle und zählt N Spalten nach rechts — genau dieses einseitige Design ist die Quelle jedes seiner Fehler. Erfahren Sie, warum das 4. Argument (range_lookup) fast immer FALSE sein muss, warum VLOOKUP nicht nach links schauen kann, warum eine fest verdrahtete Spaltennummer beim Einfügen einer Spalte stillschweigend bricht und wie Sie das #N/A beheben, das schlicht nicht gefunden bedeutet.

Henry
Excel INDEX & VERGLEICH — der Zwei-Funktionen-Nachschlag, der SVERWEIS schlägt

Excel INDEX & VERGLEICH — der Zwei-Funktionen-Nachschlag, der SVERWEIS schlägt

INDEX und MATCH teilen einen Nachschlag in zwei Aufgaben: MATCH findet die Position (welche Zeile?), INDEX gibt den Wert an dieser Position zurück (was steht dort?). Suche von Abruf zu entkoppeln ist genau das, was INDEX/MATCH alles gibt, was VLOOKUP fehlt — es schaut so mühelos nach links wie nach rechts, übersteht eingefügte Spalten und macht echte zweidimensionale Nachschläge. Lernen Sie das Muster, die match_type-Falle und wann es XLOOKUP immer noch schlägt.

Henry
Excel WVERWEIS & VERWEIS — horizontale Nachschläge und die Alt-Funktion, die in Rente gehört

Excel WVERWEIS & VERWEIS — horizontale Nachschläge und die Alt-Funktion, die in Rente gehört

HLOOKUP ist VLOOKUP um 90 Grad gedreht — es durchsucht die erste ZEILE und liest nach unten. LOOKUP ist der Vorfahr von VLOOKUP, und sein fataler Makel: Es hat keine Option für exakte Übereinstimmung — es nähert immer an und verlangt sortierte Daten. Erfahren Sie, wann ein horizontales Layout HLOOKUP zur richtigen Wahl macht, warum der klassische LOOKUP(2,1/…)-Trick noch in alten Blättern auftaucht und warum beide meist XLOOKUP weichen.

Henry
Excel NICHT- & XODER-Funktion — Eine Bedingung umkehren, und die „Ausreißer"-Logik, die fast alle falsch verstehen

Excel NICHT- & XODER-Funktion — Eine Bedingung umkehren, und die „Ausreißer"-Logik, die fast alle falsch verstehen

NOT kehrt ein TRUE/FALSE-Urteil um; XOR ist das exklusive Oder, das AND und OR nicht ausdrücken. Erfahren Sie, warum NOT genau ein Argument nimmt (Sie schreiben also NOT(AND(...))), wann NOT nur ein verkleidetes <> ist, warum das Gesetz von De Morgan seine wahre Superkraft ist und die XOR-Falle: Mit 3+ Eingaben liefert es TRUE für eine UNGERADE Anzahl von TRUEs, nicht für „genau eines“.

Henry
Excel IS-Funktionen — ISTZAHL, ISTTEXT, ISTLEER, ISTFEHLER & ISTNV (Eine Formel absichern, bevor sie bricht)

Excel IS-Funktionen — ISTZAHL, ISTTEXT, ISTLEER, ISTFEHLER & ISTNV (Eine Formel absichern, bevor sie bricht)

Die IS-Familie inspiziert eine Zelle und gibt ein TRUE/FALSE-Urteil zurück — sie klassifiziert, sie verändert nie. Erfahren Sie, warum ISBLANK strenger ist als „sieht leer aus“, warum ISERROR echte Bugs versteckt, während ISNA und IFNA sicherer sind, warum IF(ISERROR(x),…,x) x zweimal berechnet und die Killer-Anwendung von ISNUMBER: SEARCH in einen sauberen Teiltreffer-Test verwandeln.

Henry
Excel TEXT-Funktion — Eine Zahl als Text formatieren (und die Falle, die das Summieren verhindert)

Excel TEXT-Funktion — Eine Zahl als Text formatieren (und die Falle, die das Summieren verhindert)

Die TEXT-Funktion verwandelt eine Zahl oder ein Datum mithilfe eines Formatcodes in eine formatierte Textzeichenfolge — =TEXT(1234.5,"$#,##0.00") ergibt "$1,234.50". Lernen Sie das mentale Modell (ein Format fest in eine echte Zeichenfolge einbacken vs. das reine Anzeige-Zahlenformat einer Zelle), die #1-Falle (das Ergebnis ist Text, also ignoriert SUM es), den Crashkurs zu Formatcodes für Zahlen und Datumsangaben, führende Nullen und Gebietsschema sowie den Fall, in dem ein Zellenformat, CONCAT oder ROUND das bessere Werkzeug ist.

Henry
Excel VALUE & NUMBERVALUE — Text zurück in rechenfähige Zahlen verwandeln

Excel VALUE & NUMBERVALUE — Text zurück in rechenfähige Zahlen verwandeln

VALUE parst eine Textzeichenfolge, die numerisch aussieht — "1,234.50" oder "$9.00" — in eine echte Zahl, die Sie summieren, sortieren und in Diagramme bringen können. Es ist die Umkehrung von TEXT. Lernen Sie das mentale Modell, die häufigste reale Ursache (als Text gespeicherte Zahlen nach einem Import oder Einfügen), warum VALUE Ihrem Systemgebietsschema folgt und wie NUMBERVALUE ein europäisches "1.234,56" repariert, die schnelleren formelfreien Lösungen (*1, doppeltes Minus, Text in Spalten) und warum modernes Excel manchen Text umwandelt, SUM aber nie.

Henry
Excel DATEVALUE & TIMEVALUE — Als Text gefangene Datums- und Zeitangaben retten

Excel DATEVALUE & TIMEVALUE — Als Text gefangene Datums- und Zeitangaben retten

Ein Datum in Excel ist in Wirklichkeit eine fortlaufende Zahl, die ein Datumsformat trägt; ein Datum, das als Text ankommt, ist ein Hochstapler, der nicht sortiert, nicht subtrahiert und DATEDIF nicht speist. DATEVALUE parst ein Textdatum in seine fortlaufende Zahl, und TIMEVALUE parst eine Textzeit in einen Bruchteil eines Tages. Lernen Sie das mentale Modell, die Symptome von Textdaten, die Falle der regionalen Mehrdeutigkeit bei 03/04/2026, wie man Datum + Zeit kombiniert, wann DATEVALUE eine Zeichenfolge nicht parsen kann und die Alternativen DATE(LEFT,MID,RIGHT) und Text in Spalten.

Henry
Excel INDIRECT-Funktion — Text in einen lebenden Bezug verwandeln (und warum sie flüchtig ist)

Excel INDIRECT-Funktion — Text in einen lebenden Bezug verwandeln (und warum sie flüchtig ist)

INDIRECT verwandelt eine Textzeichenfolge wie "A1" oder "Sheet2!B3" in einen lebenden Zellbezug. Lernen Sie das mentale Modell, die Falle Nr. 1 (Text aktualisiert sich nicht automatisch — das Umbenennen eines Blatts zerstört jeden INDIRECT mit #REF!), warum die Funktion flüchtig und für Excels Abhängigkeitsverfolgung unsichtbar ist, den #REF!-Fallstrick bei geschlossenen Arbeitsmappen, ihren einen echten Einsatzzweck — das Ziehen aus einem Blatt, dessen Name in einer Zelle steht — und wann eine Tabelle, ein 3D-Bezug oder CHOOSE das bessere Werkzeug ist.

Henry
Excel OFFSET-Funktion — Ein Bezug, der sich verschiebt (und wann INDEX besser ist)

Excel OFFSET-Funktion — Ein Bezug, der sich verschiebt (und wann INDEX besser ist)

OFFSET liefert einen Bezug, der eine bestimmte Anzahl von Zeilen und Spalten von einem Anker entfernt liegt, optional auf einen ganzen Block vergrößert. Lernen Sie das mentale Modell, warum die Funktion einen Bezug (keinen Wert) liefert, sodass sie SUM speisen kann, die Kosten der Flüchtigkeit, den klassischen Trick des dynamischen benannten Bereichs und warum eine Tabelle oder ein Überlaufbereich ihn heute schlägt, die #REF!-Falle über den Blattrand hinaus, und die entscheidende Ermessensfrage: nutzen Sie das nicht-flüchtige INDEX zum Indizieren in einen Bereich, und behalten Sie OFFSET nur für wirklich bewegliche Fenster.

Henry
Excel ADDRESS-Funktion — Die Adresse einer Zelle als Text bauen (nicht ihren Wert)

Excel ADDRESS-Funktion — Die Adresse einer Zelle als Text bauen (nicht ihren Wert)

ADDRESS baut den Text einer Zelladresse — =ADDRESS(1,1) liefert die Zeichenfolge "$A$1", nicht das, was in A1 steht. Lernen Sie das mentale Modell (es ist das Gegenteil der Eingabeseite von INDIRECT), das Missverständnis Nr. 1, dass die Funktion Text und keinen Wert liefert, das Argument abs_num für die $-Sperrung, warum sie im Gegensatz zu INDIRECT und OFFSET NICHT flüchtig ist, die echten Aufgaben — melden, wo ein Wert steht, per MATCH, und Bezüge für INDIRECT bauen — und eine ehrliche Einschätzung, wie nischig sie in modernem Excel ist.

Henry
Excel-Funktion SUMPRODUCT — erst multiplizieren, dann addieren, und die Bedingungen, an denen SUMIFS scheitert

Excel-Funktion SUMPRODUCT — erst multiplizieren, dann addieren, und die Bedingungen, an denen SUMIFS scheitert

SUMPRODUCT multipliziert Arrays Element für Element und addiert die Ergebnisse — eine Zelle, ein Skalarprodukt. Lernen Sie die #VALUE!-Falle bei unterschiedlich großen Arrays kennen, warum Sie boolesche Arrays für UND multiplizieren und für ODER addieren (niemals AND()/OR()), wann das doppelte Minus -- nötig ist und welche gewichteten Summen und Spalten-übergreifenden ODER-Aufgaben SUMIFS bis heute nicht lösen kann.

Henry
Excel-Funktion SUBTOTAL — Summen, die Ihren Filter respektieren (und die 9-gegen-109-Falle)

Excel-Funktion SUBTOTAL — Summen, die Ihren Filter respektieren (und die 9-gegen-109-Falle)

SUBTOTAL ist eine filterbewusste Summe: Sie überspringt Zeilen, die ein Filter ausgeblendet hat, sodass sich die Zahl am Ende Ihrer Liste beim Filtern aktualisiert. Lernen Sie die function_num-Tabelle, die Falle 1–11 gegen 101–111 (warum manuelles Ausblenden von Zeilen Ihre Summe nicht verändert), warum SUBTOTAL andere SUBTOTALs ignoriert, sodass Gesamtsummen nie doppelt zählen, und warum es Fehler nicht überspringen kann — die Aufgabe, für die AGGREGATE gebaut wurde.

Henry
Excel-Funktion AGGREGATE — die Obermenge von SUBTOTAL, die auch Fehler ignoriert

Excel-Funktion AGGREGATE — die Obermenge von SUBTOTAL, die auch Fehler ignoriert

AGGREGATE ist SUBTOTAL mit zwei Erweiterungen: 19 Funktionen statt 11 und ein options-Argument, mit dem es Fehlerwerte, ausgeblendete Zeilen und verschachtelte Summen ignorieren kann. Lernen Sie das Raster aus function_num + options, seinen meistunterschätzten Kniff — eine Spalte mit #N/A summieren, ganz ohne IFERROR-Bereinigung — und die Array-Funktionen (LARGE, SMALL, PERCENTILE), die ein zusätzliches k-Argument brauchen.

Henry
Excel FINDEN & SUCHEN — Text nach Inhalt lokalisieren (FIND vs. SEARCH und die

Excel FINDEN & SUCHEN — Text nach Inhalt lokalisieren (FIND vs. SEARCH und die

FIND und SEARCH geben die Position einer Zeichenkette innerhalb einer anderen zurück — der Anker, den Sie an MID und LEFT übergeben. Lernen Sie die zwei echten Unterschiede (FIND ist case-sensitiv ohne Platzhalter; SEARCH ist nicht case-sensitiv mit Platzhaltern), warum beide bei fehlender Übereinstimmung #VALUE! werfen, und den ISNUMBER(SEARCH())-Enthält-Trick.

Henry
Excel ROUND-Funktion — ROUND, ROUNDUP & ROUNDDOWN (und warum Formatieren kein Runden ist)

Excel ROUND-Funktion — ROUND, ROUNDUP & ROUNDDOWN (und warum Formatieren kein Runden ist)

ROUND verändert den gespeicherten Wert auf eine bestimmte Anzahl Nachkommastellen; die Zellformatierung ändert nur die Darstellung. Erfahren Sie, warum diese Lücke Rechnungssummen um einen Cent verfehlt, lernen Sie den num_digits-Trick (positiv, null, negativ), wie sich ROUNDUP und ROUNDDOWN von ROUND unterscheiden und warum sie nach dem Abstand zur Null runden — nicht nach oben und unten.

Henry
Excel MROUND, CEILING & FLOOR — Auf das nächste Vielfache runden, nicht auf eine Nachkommastelle

Excel MROUND, CEILING & FLOOR — Auf das nächste Vielfache runden, nicht auf eine Nachkommastelle

MROUND, CEILING und FLOOR runden auf das nächste Vielfache einer Zahl — 5 Cent, 15 Minuten, einen vollen Karton — nicht auf eine Anzahl von Nachkommastellen. Erfahren Sie, warum das zweite Argument ein Vielfaches und keine Stellenzahl ist, warum das alte CEILING bei negativen Zahlen #NUM! liefert, warum CEILING.MATH und FLOOR.MATH die sicheren modernen Varianten sind und wann man welche wählt.

Henry
Excel INT, TRUNC & MOD — Nachkommastellen weglassen und den Rest finden

Excel INT, TRUNC & MOD — Nachkommastellen weglassen und den Rest finden

INT und TRUNC lassen beide die Nachkommastellen weg, aber INT rundet in Richtung minus-unendlich, während TRUNC einfach zur Null hin abschneidet — bei negativen Zahlen gehen sie deshalb auseinander. MOD liefert den Rest, und in Excel nimmt der Rest das Vorzeichen des Divisors an, nicht das der Zahl. Lernen Sie die Off-by-one-Falle, das Trennen von Datum und Uhrzeit und das Zebrastreifen-Muster.

Henry
Excel IF-Funktion — Eine Ja/Nein-Weggabelung, und wann Sie aufhören sollten zu verschachteln

Excel IF-Funktion — Eine Ja/Nein-Weggabelung, und wann Sie aufhören sollten zu verschachteln

IF stellt genau eine Ja/Nein-Frage und gibt eine von zwei Antworten zurück. Erfahren Sie, warum ein fehlendes drittes Argument FALSE anzeigt, warum verschachtelte IF-Pyramiden ab zwei Ebenen auseinanderfallen (nutzen Sie stattdessen IFS oder einen Lookup), wie Sie Bedingungen mit AND/OR statt durch Verschachteln verknüpfen und warum der Textvergleich von IF die Groß- und Kleinschreibung ignoriert.

Henry
Excel IFS- und SWITCH-Funktion — Mehrwege-Logik ohne die verschachtelte IF-Pyramide

Excel IFS- und SWITCH-Funktion — Mehrwege-Logik ohne die verschachtelte IF-Pyramide

IFS prüft eine Liste von Bedingungen von oben nach unten und gibt die erste Übereinstimmung zurück; SWITCH gleicht einen Wert gegen eine Liste von Fällen ab. Lernen Sie die zwei Fallen kennen, die die meisten Bugs verursachen — IFS hat kein eingebautes Sonst (ein vergessener Standardwert liefert #N/A) und die erste Übereinstimmung gewinnt, also zählt die Reihenfolge — und wann Sie IFS, SWITCH oder eine Lookup-Tabelle nutzen.

Henry
Excel LET-Funktion — Variablen benennen für lesbare, schnellere Formeln

Excel LET-Funktion — Variablen benennen für lesbare, schnellere Formeln

Mit LET deklarieren Sie benannte Variablen innerhalb einer einzigen Formel. Lernen Sie die Regel Namen-paarweise-Ergebnis-zuletzt, warum LET jeden Wert nur einmal berechnet (also schneller ist, nicht bloß aufgeräumter), die Stolperfallen bei der Benennung und wann aus einer 200 Zeichen langen verschachtelten Formel ein LET werden sollte.

Henry