manchmal, nein eher öfter, wünscht man sich praktische Funktionalitäten in Excel.
Mir ging es letzte Woche so: ich hatte ein recht schönes Management-Cockpit für einen Kunden entwickelt. Nach der Präsentation hieß es dann: sehr schön! „Ach übrigens“ – man beachte meine beliebten Ach-Übrigens-Faktoren! – „Ach übrigens, unsere Abteilungsstruktur hat sich ein wenig geändert… „
Kein Problem, in meinen Modellen lassen sich vorhersehbare – ich kenne mittlerweile hunderte von diesen Ach-Übrigens-Faktoren! – leicht einbauen. Ich achte immer darauf, dass sie schnell, ohne Modelländerung oder Programmierung übernommen werden können. Im PRT-Modell (s. Glossar) kein Problem.
Aber: durch die Änderung ergaben einige PIVOTDATENZUORDNEN-Funktionen bei bestimmen Kombinationen von Parametern: #WERT! Kein Problem – mit der Funktion WENNFEHLER kann man dies abfangen. Aber: blöd, wenn man die Funktion 60 mal einbauen muss! (Hier stellt sich immer wieder die Frage, warum Microsoft in seine Funktionen nicht ein vernünftiges zentrales Fehlermanagement einbaut, aber diese Frage kann man wohl nicht pauschal beantworten…)
Also was tun? Wie üblich bringt Visual Basic die Möglichkeit mit sich, EXCEL zu erweitern, wo der Alltag Dinge verlangt, die im stillen Kämmerlein bei Microsoft so nicht vorhergesehen wurden: mein kleines Makro setzt um bestehende Formeln die Funktion WENNFEHLER(). Di ist übrigens eine der wenigen echt guten neuen Funktionen seit Excel 2007.
So entstand also mein Tool: Wennfehler_drumrum! Recht schnell programmiert in 10 Minuten, sparte es mir beim ersten Einsatz bereits eine halbe Stunde stupide Tipperei.
Kopieren Sie das Makro Wennfehler_drumrum am besten in Ihre Persönliche Makroarbeitsmappe, markieren Sie die Zellen mit den Formeln, die Sie mit einer Fehlerbehandlung versehen wollen, und starten Sie das Makro – vielleicht gleich mit Alt + F8!
Hier kommt der Code:
Sub WENNFEHLER_drumrum()
‚ (c) Peter Rühm, Pollmann & Rühm Training
‚ Setzt die Funktion WENNFEHLER um Formeln in den markierten Zellen
‚ aber nur, wenn noch kein Wennfehler drum ist
Dim Zelle As Range
For Each Zelle In Selection
If Zelle.HasFormula Then
If UCase(Left(Zelle.FormulaLocal, 12)) <> UCase(„=wennfehler(„) Then
Zelle.FormulaLocal = „=wennfehler(“ & Mid(Zelle.FormulaLocal, 2) & „;0)“
End If
End If
Next Zelle
End Sub
Damit wünsche ich Ihnen viel Erfolg!
Wenn Sie an mehr solcher pragmatischen Beispiele interessiert sind, so gibt es dazu natürlich ein tolles Seminar…..
Ihr Peter Rühm
Wenn Ihnen dieser Beitrag gefallen hat, dann teilen Sie ihn gerne. Falls Sie Anmerkungen haben, schreiben Sie bitte einen Kommentar, oder senden Sie mir eine Mail an info@prt.de.
6 Antworten
Jetzt kommentiere ich meinen eigenen Beitrag: Danke für die vielen netten Feedbacks auf dieses mini Excel-Tool (ich tippe hier gerne Excel-Toll, vielleicht ist das ein guter Titel ?) Ich wurde nun so oft gebeten, hier mehr zu bringen, dass ich mal in die Trickkiste schaue…
Beim Coaching in einem BI-Projekt bei einem meiner Lieblingskunden in München sehe ich heute: mein vorgestern geposteter WennfehlerDrumRum-Helper ist schon auf einem Button in Excel integriert 🙂 Das freut mich!
Guten Tag Hr. Ruehm. Dies scheint mir ein sehr Hilfreiches Tool zu sein. Gerade, da ich es sehr gut gebrauchen könnte. Leider funktioniert es bei mir unter Excel 2010 nicht. Gibt es da eine Änderung oder haben Sie eine Idee wieso es nicht funktioniert? Es wird immer ein Syntaxfehler angezeigt.
Mfg
Michael Bachmann
Hallo Peter, das ist genau die Funktion, die ich brauche. Leider funktioniert sie bei mir nicht. Ich habe sie eingegeben als:
Sub WENNFEHLER_drumrum()
Dim Zelle As Range
For Each Zelle In Selection
If Zelle.HasFormula Then
If UCase(Left(Zelle.FormulaLocal, 12)) UCase(„=wennfehler(„) Then
Zelle.FormulaLocal = „=wennfehler(“ & Mid(Zelle.FormulaLocal, 2) & „;0)“
End If
End If
Next Zelle
End Sub
Wo kann hier der Fehler sein?
Ich kenne mich mit VBA leider gar nicht aus, aber vielleicht kannst Du mir ja helfen.
Vielen Dank und viele Grüße
Doreen
Hallo Peter,
meine Anfrage hat sich erledigt. Ich habe im Excel-Forum einen Beitrag zu Deinem Script gefunden :-). Es müssen einfach alle “ nach oben gesetzt werden; bei Dir sind sie z.T. unten.
Viele Grüße
Doreen
Danke für den Hinweis! Freut mich, wenn es nun klappt!
TOP! Vielen Dank