Excel 2013 VBA für Profis

Textteile finden

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Beim Aufteilen von Text ist es nicht immer vorhersagbar, wie lang der gesuchte Teil ist. Daher können Sie mit den hier vorgestellten Funktionen bestimmte Elemente im Text sowie deren Position finden.

Transkript

Das Problem bei den Left-, Right-, und Mid-Funktionen war meistens, dass Sie nicht sagen können, wo genau Sie die Grenze zu dem gesuchten Wort oder Textteil ziehen wollen. Ich habe hier fest eine Zahl vorgegeben, weil ich per Augenschein da oben zählen konnte. Das möchte ich jetzt ändern, sodass es flexibler wird. Dazu ändere ich erstmal oder ergänze neue Konstanten. Auch das ist eine Konstante im String-Datentyp. Nennen wir die einfach BeispielB. Da steht dann zum Beispiel "Willi Wichtig" drin Und hier entsprechend eine zweite Konstante, auch für einen Dateinamen, einfach B. Das ist eine, sagen wir ruhig, Access-Datenbank. Und jetzt werde ich hier entsprechend wieder diese fast ähnlichen Prozeduren schreiben, aber Sub DasErsteWortBesser. Weil es nämlich auch dann funktionieren soll, wenn ich nicht selber nachgucken kann, wo das Leerzeichen steht. Dazu brauche ich erstmal eine kleine Variable, das ist einfach netter zu programmieren, eine Integer-Variable, also: Dim intPos As Integer, weil darin die Position des Leerzeichens enthalten sein wird. Und das liefert mir zurück eine Funktion, die heißt "InString", schreibt sich aber nur so kurz, InStr. InStr liefert für eine zu untersuchende Zeichenkette, also zum Beispiel m_cstrBeispiel, die Position des im zweiten Argument angegebenen Zeichens. Können auch mehrere sein. In diesem Fall ist es ein einziges, nämlich ein Leerzeichen. Den Rest können Sie weglassen, also Klammer zu. Da steht jetzt im Fall von Beispiel, das ist "Lorenz Hölscher", eine 7, und zwar errechnet, nicht von mir gezählt. Jetzt kann ich unter Debug.Print hineinschreiben, was ich sehen möchte, nämlich alle Zeichen davor. Also von Left wieder das gleiche Beispiel. Und jetzt weiß ich, wie viele Zeichen. Die habe ich gerade eben in IntPos ermittelt. Allerdings steht dort eine 7, weil das Leerzeichen an der Position 7 ist. Ich will also genau einen weniger, nämlich nur die Zeichen davor, 6 Stück. Das ist das, was hier auch schon steht, aber ich habe es errechnet und nicht persönlich gezählt. Wenn ich jetzt also nach dem Speichern das Ganze mit F5 starte, dann steht hier so weit korrekt "Lorenz". Aber anders als bei dem anderen Beispiel, ich kann auch eine andere Variable nehmen. Und es wird sofort funktionieren, jetzt allerdings dahinter, ich muss den Timer löschen, damit Sie sehen, dass es klappt. Also mit F5. Und wenn es denn sein muss, können wir auch den Dateinamen nehmen. Nämlich den originalen Dateinamen. Und dann wird eben nur das Wort "Protokoll" ermittelt, wie Sie hier sehen. Also jetzt wieder auf Beispiel umgeändert. Es ist mithilfe der InStr-Funktion sehr viel einfacher, diese Trennung oder das gesuchte Wortteil zu ermitteln, weil Sie herauskriegen können, an welcher Position der Trennbereich liegt. Das "Trennzeichen" will ich nicht sagen, weil es auch mehrere sein können. Das funktioniert für das erste Wort jetzt besser. Und auch für das letzte Wort. Also Sub DasLetzteWortBesser. Das ist sich so ähnlich, dass wir vieles erstmal kopieren können. In dem Fall wird jetzt der Nachname "Hölscher" ermittelt, aber eben nicht mit InStr; InStr zählt immer von vorne das erste Auftauchen; sondern mit "InString Reverse", InStrRev schreibt sich das nur. Das zählt immer von hinten das letzte Auftreten dieses Zeichens oder dieser Zeichenkette. Aber, was gern übersehen wird: nicht als Anzahl Zeichen von hinten gezählt, sondern trotzdem von vorne gezählt. Also es werden nicht etwa von hier 1, 2, 3, 4, 5, 6, 7, 8, 9. Position ermittelt, sondern von vorne 6 Zeichen, an 7. Position. Deswegen ist die InstrRev-Funktion auch nur sinnvoll im Zusammenhang entweder mit Left, wenn ich von links den Rest haben will. Oder, das ist in diesem Fall so mit der Mid-Funktion, weil ich mit der Mid-Funktion von dieser Position aus bis zum Ende den Rest ermitteln kann. Die Mid-Funktion hat noch ein drittes Argument, nämlich wie viele Zeichen will ich da rausschneiden. Anders als in dem Beispiel, wo ich aus Hölscher das Wort "öl" rausgeholt habe, lasse ich das dritte Argument weg. Sie sehen an den eckigen Klammern hier, dass es optional ist. Und das bedeutet einfach: von dieser Position aus bis zum Ende. Aber + 1. Die Position gibt die Stellung des Leerzeichens an. Und ich will dahinter beginnen. Also DasLetzteWortBesser. Ich muss den Rest da unten mal eben löschen. Jetzt mit F5 kann ich genau den Bereich Hölscher ermitteln. Und das ist deswegen so wichtig, weil bei Dateiendungen ja möglicherweise unklar ist, wie lang diese Endung nun wirklich ist. Die alte Regel 8+3, 8 Dateiname, 3 Endung, gilt schon lange nicht mehr. Also Sub DateiEndungBesser. Die ist besser so zu programmieren, den Fall können wir wieder rüberkopieren. Und zwar am Dateinamen gemessen. Und nicht das Leerzeichen gesucht, sondern der Punkt, und zwar der letzte. Deswegen steht hier InstrRev. Jetzt kann ich wieder mit Debug.Print und der Mid-Funktion; weil ich ja von vorne zähle, muss ich die nehmen. m_cstr Dateiname. Die gleiche Quelle nehmen. Und dann hier ab IntPos + 1; das ist eigentlich immer wieder automatisch dasselbe; die Endung finden. Und zwar egal wie sie lang ist. Also; ich muss mal gucken, dass Sie die oben auch noch sehen. Jetzt nach dem Speichern, mit F5. Das ist die Endung "xlsx". Der letzte Punkt wurde mit InStrRev gefunden, die da zwischendurch interessieren nicht. Und sind im Betriebssystem erlaubt. Auch das Betriebssystem guckt von hinten nach dem letzten Punkt. Wenn die Endung, das trifft den DateinameB, zufällig ein Zeichen länger ist, macht mir das nichts. Ich kann also hier genauso mit F5 längere Endungen finden. Das sind also die besseren Varianten, die zwar auch Left und Mid benutzen und übrigens nicht Right, wie man das sonst zu Fuß gern mal macht, sondern die mithilfe der InStr- oder manchmal auch InStrRev-Funktion das letzte Auftreten eines Trennzeichens ermitteln und damit dann auch im Blindflug funktionieren, ohne dass Sie selber persönlich draufgucken und sagen, an dieser Stelle ist die Trennung.

Excel 2013 VBA für Profis

Nutzen Sie die Möglichkeiten der Programmiersprache VBA in Excel 2013, um eigene Dialoge zu erstellen, auf andere Arbeitsmappen zuzugreifen und wichtige Funktionen einzusetzen.

4 Std. 59 min (53 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!